Quellcode durchsuchen

zl-12-26-后端

林小张 vor 1 Tag
Ursprung
Commit
a4c73e00ac
100 geänderte Dateien mit 7108 neuen und 1 gelöschten Zeilen
  1. 7 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductBaseController.java
  2. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductCategoryRecommendedController.java
  3. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductCategoryRecommendedLinkController.java
  4. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductDecorationFloorLinkController.java
  5. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftCategoryController.java
  6. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftCategoryLinkController.java
  7. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftFloorController.java
  8. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftFloorLinkController.java
  9. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftNoticeController.java
  10. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductIndustrialFloorController.java
  11. 106 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductIndustrialFloorLinkController.java
  12. 56 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryRecommended.java
  13. 58 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryRecommendedLink.java
  14. 72 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductDecorationFloorLink.java
  15. 102 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftCategory.java
  16. 89 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftCategoryLink.java
  17. 86 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftFloor.java
  18. 62 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftFloorLink.java
  19. 81 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftNotice.java
  20. 77 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductIndustrialFloor.java
  21. 72 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductIndustrialFloorLink.java
  22. 1 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductProgram.java
  23. 55 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryRecommendedBo.java
  24. 57 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryRecommendedLinkBo.java
  25. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductDecorationFloorLinkBo.java
  26. 100 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftCategoryBo.java
  27. 85 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftCategoryLinkBo.java
  28. 75 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftFloorBo.java
  29. 56 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftFloorLinkBo.java
  30. 74 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftNoticeBo.java
  31. 77 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductIndustrialFloorBo.java
  32. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductIndustrialFloorLinkBo.java
  33. 57 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/SiteProductBo.java
  34. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryRecommendedLinkVo.java
  35. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryRecommendedVo.java
  36. 82 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductDecorationFloorLinkVo.java
  37. 107 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftCategoryLinkVo.java
  38. 119 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftCategoryVo.java
  39. 69 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftFloorLinkVo.java
  40. 104 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftFloorVo.java
  41. 86 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftNoticeVo.java
  42. 82 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductIndustrialFloorLinkVo.java
  43. 100 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductIndustrialFloorVo.java
  44. 115 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/SiteProductVo.java
  45. 12 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductBaseMapper.java
  46. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductCategoryRecommendedLinkMapper.java
  47. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductCategoryRecommendedMapper.java
  48. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductDecorationFloorLinkMapper.java
  49. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftCategoryLinkMapper.java
  50. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftCategoryMapper.java
  51. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftFloorLinkMapper.java
  52. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftFloorMapper.java
  53. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftNoticeMapper.java
  54. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductIndustrialFloorLinkMapper.java
  55. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductIndustrialFloorMapper.java
  56. 11 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductBaseService.java
  57. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductCategoryRecommendedLinkService.java
  58. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductCategoryRecommendedService.java
  59. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductDecorationFloorLinkService.java
  60. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftCategoryLinkService.java
  61. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftCategoryService.java
  62. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftFloorLinkService.java
  63. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftFloorService.java
  64. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftNoticeService.java
  65. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductIndustrialFloorLinkService.java
  66. 70 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductIndustrialFloorService.java
  67. 15 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBaseServiceImpl.java
  68. 137 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductCategoryRecommendedLinkServiceImpl.java
  69. 142 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductCategoryRecommendedServiceImpl.java
  70. 139 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductDecorationFloorLinkServiceImpl.java
  71. 142 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftCategoryLinkServiceImpl.java
  72. 145 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftCategoryServiceImpl.java
  73. 137 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftFloorLinkServiceImpl.java
  74. 141 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftFloorServiceImpl.java
  75. 141 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftNoticeServiceImpl.java
  76. 139 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductIndustrialFloorLinkServiceImpl.java
  77. 140 0
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductIndustrialFloorServiceImpl.java
  78. 1 1
      ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductProgramServiceImpl.java
  79. 69 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductBaseMapper.xml
  80. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductCategoryRecommendedLinkMapper.xml
  81. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductCategoryRecommendedMapper.xml
  82. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductDecorationFloorLinkMapper.xml
  83. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftCategoryLinkMapper.xml
  84. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftCategoryMapper.xml
  85. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftFloorLinkMapper.xml
  86. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftFloorMapper.xml
  87. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftNoticeMapper.xml
  88. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductIndustrialFloorLinkMapper.xml
  89. 7 0
      ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductIndustrialFloorMapper.xml
  90. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorAdvertManageController.java
  91. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorAdvertiseController.java
  92. 110 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorController.java
  93. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorLabelController.java
  94. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorTitleController.java
  95. 106 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysIndustrialHomeTitleController.java
  96. 82 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloor.java
  97. 89 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorAdvertManage.java
  98. 89 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorAdvertise.java
  99. 87 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorLabel.java
  100. 87 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorTitle.java

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

@@ -176,5 +176,12 @@ public class ProductBaseController extends BaseController {
         return R.ok(productUnitService.queryList(bo));
     }
 
+    /**
+     * 查询站点产品列表(联表查询,用于福礼装修站点产品页面)
+     */
+    @GetMapping("/siteProduct/list")
+    public TableDataInfo<SiteProductVo> siteProductList(SiteProductBo bo, PageQuery pageQuery) {
+        return productBaseService.querySiteProductPageList(bo, pageQuery);
+    }
 
 }

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductCategoryRecommendedController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedVo;
+import org.dromara.product.domain.bo.ProductCategoryRecommendedBo;
+import org.dromara.product.service.IProductCategoryRecommendedService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工业推荐分类
+ * 前端访问路由地址为:/system/categoryRecommended
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/categoryRecommended")
+public class ProductCategoryRecommendedController extends BaseController {
+
+    private final IProductCategoryRecommendedService productCategoryRecommendedService;
+
+    /**
+     * 查询工业推荐分类列表
+     */
+    @SaCheckPermission("product:categoryRecommended:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductCategoryRecommendedVo> list(ProductCategoryRecommendedBo bo, PageQuery pageQuery) {
+        return productCategoryRecommendedService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出工业推荐分类列表
+     */
+    @SaCheckPermission("product:categoryRecommended:export")
+    @Log(title = "工业推荐分类", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductCategoryRecommendedBo bo, HttpServletResponse response) {
+        List<ProductCategoryRecommendedVo> list = productCategoryRecommendedService.queryList(bo);
+        ExcelUtil.exportExcel(list, "工业推荐分类", ProductCategoryRecommendedVo.class, response);
+    }
+
+    /**
+     * 获取工业推荐分类详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:categoryRecommended:query")
+    @GetMapping("/{id}")
+    public R<ProductCategoryRecommendedVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productCategoryRecommendedService.queryById(id));
+    }
+
+    /**
+     * 新增工业推荐分类
+     */
+    @SaCheckPermission("product:categoryRecommended:add")
+    @Log(title = "工业推荐分类", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductCategoryRecommendedBo bo) {
+        return toAjax(productCategoryRecommendedService.insertByBo(bo));
+    }
+
+    /**
+     * 修改工业推荐分类
+     */
+    @SaCheckPermission("product:categoryRecommended:edit")
+    @Log(title = "工业推荐分类", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductCategoryRecommendedBo bo) {
+        return toAjax(productCategoryRecommendedService.updateByBo(bo));
+    }
+
+    /**
+     * 删除工业推荐分类
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:categoryRecommended:remove")
+    @Log(title = "工业推荐分类", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productCategoryRecommendedService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductCategoryRecommendedLinkController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedLinkVo;
+import org.dromara.product.domain.bo.ProductCategoryRecommendedLinkBo;
+import org.dromara.product.service.IProductCategoryRecommendedLinkService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工业推荐分类商品关联
+ * 前端访问路由地址为:/product/categoryRecommendedLink
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/categoryRecommendedLink")
+public class ProductCategoryRecommendedLinkController extends BaseController {
+
+    private final IProductCategoryRecommendedLinkService productCategoryRecommendedLinkService;
+
+    /**
+     * 查询工业推荐分类商品关联列表
+     */
+    @SaCheckPermission("product:categoryRecommendedLink:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductCategoryRecommendedLinkVo> list(ProductCategoryRecommendedLinkBo bo, PageQuery pageQuery) {
+        return productCategoryRecommendedLinkService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出工业推荐分类商品关联列表
+     */
+    @SaCheckPermission("product:categoryRecommendedLink:export")
+    @Log(title = "工业推荐分类商品关联", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductCategoryRecommendedLinkBo bo, HttpServletResponse response) {
+        List<ProductCategoryRecommendedLinkVo> list = productCategoryRecommendedLinkService.queryList(bo);
+        ExcelUtil.exportExcel(list, "工业推荐分类商品关联", ProductCategoryRecommendedLinkVo.class, response);
+    }
+
+    /**
+     * 获取工业推荐分类商品关联详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:categoryRecommendedLink:query")
+    @GetMapping("/{id}")
+    public R<ProductCategoryRecommendedLinkVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productCategoryRecommendedLinkService.queryById(id));
+    }
+
+    /**
+     * 新增工业推荐分类商品关联
+     */
+    @SaCheckPermission("product:categoryRecommendedLink:add")
+    @Log(title = "工业推荐分类商品关联", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductCategoryRecommendedLinkBo bo) {
+        return toAjax(productCategoryRecommendedLinkService.insertByBo(bo));
+    }
+
+    /**
+     * 修改工业推荐分类商品关联
+     */
+    @SaCheckPermission("product:categoryRecommendedLink:edit")
+    @Log(title = "工业推荐分类商品关联", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductCategoryRecommendedLinkBo bo) {
+        return toAjax(productCategoryRecommendedLinkService.updateByBo(bo));
+    }
+
+    /**
+     * 删除工业推荐分类商品关联
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:categoryRecommendedLink:remove")
+    @Log(title = "工业推荐分类商品关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productCategoryRecommendedLinkService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductDecorationFloorLinkController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductDecorationFloorLinkVo;
+import org.dromara.product.domain.bo.ProductDecorationFloorLinkBo;
+import org.dromara.product.service.IProductDecorationFloorLinkService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 平台装修楼层商品关联
+ * 前端访问路由地址为:/product/decorationFloorLink
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/decorationFloorLink")
+public class ProductDecorationFloorLinkController extends BaseController {
+
+    private final IProductDecorationFloorLinkService productDecorationFloorLinkService;
+
+    /**
+     * 查询平台装修楼层商品关联列表
+     */
+    @SaCheckPermission("product:decorationFloorLink:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductDecorationFloorLinkVo> list(ProductDecorationFloorLinkBo bo, PageQuery pageQuery) {
+        return productDecorationFloorLinkService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出平台装修楼层商品关联列表
+     */
+    @SaCheckPermission("product:decorationFloorLink:export")
+    @Log(title = "平台装修楼层商品关联", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductDecorationFloorLinkBo bo, HttpServletResponse response) {
+        List<ProductDecorationFloorLinkVo> list = productDecorationFloorLinkService.queryList(bo);
+        ExcelUtil.exportExcel(list, "平台装修楼层商品关联", ProductDecorationFloorLinkVo.class, response);
+    }
+
+    /**
+     * 获取平台装修楼层商品关联详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:decorationFloorLink:query")
+    @GetMapping("/{id}")
+    public R<ProductDecorationFloorLinkVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productDecorationFloorLinkService.queryById(id));
+    }
+
+    /**
+     * 新增平台装修楼层商品关联
+     */
+    @SaCheckPermission("product:decorationFloorLink:add")
+    @Log(title = "平台装修楼层商品关联", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductDecorationFloorLinkBo bo) {
+        return toAjax(productDecorationFloorLinkService.insertByBo(bo));
+    }
+
+    /**
+     * 修改平台装修楼层商品关联
+     */
+    @SaCheckPermission("product:decorationFloorLink:edit")
+    @Log(title = "平台装修楼层商品关联", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductDecorationFloorLinkBo bo) {
+        return toAjax(productDecorationFloorLinkService.updateByBo(bo));
+    }
+
+    /**
+     * 删除平台装修楼层商品关联
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:decorationFloorLink:remove")
+    @Log(title = "平台装修楼层商品关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productDecorationFloorLinkService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftCategoryController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductGiftCategoryVo;
+import org.dromara.product.domain.bo.ProductGiftCategoryBo;
+import org.dromara.product.service.IProductGiftCategoryService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 福礼分类
+ * 前端访问路由地址为:/product/giftCategory
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/giftCategory")
+public class ProductGiftCategoryController extends BaseController {
+
+    private final IProductGiftCategoryService productGiftCategoryService;
+
+    /**
+     * 查询福礼分类列表
+     */
+    @SaCheckPermission("product:giftCategory:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductGiftCategoryVo> list(ProductGiftCategoryBo bo, PageQuery pageQuery) {
+        return productGiftCategoryService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出福礼分类列表
+     */
+    @SaCheckPermission("product:giftCategory:export")
+    @Log(title = "福礼分类", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductGiftCategoryBo bo, HttpServletResponse response) {
+        List<ProductGiftCategoryVo> list = productGiftCategoryService.queryList(bo);
+        ExcelUtil.exportExcel(list, "福礼分类", ProductGiftCategoryVo.class, response);
+    }
+
+    /**
+     * 获取福礼分类详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:giftCategory:query")
+    @GetMapping("/{id}")
+    public R<ProductGiftCategoryVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productGiftCategoryService.queryById(id));
+    }
+
+    /**
+     * 新增福礼分类
+     */
+    @SaCheckPermission("product:giftCategory:add")
+    @Log(title = "福礼分类", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductGiftCategoryBo bo) {
+        return toAjax(productGiftCategoryService.insertByBo(bo));
+    }
+
+    /**
+     * 修改福礼分类
+     */
+    @SaCheckPermission("product:giftCategory:edit")
+    @Log(title = "福礼分类", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductGiftCategoryBo bo) {
+        return toAjax(productGiftCategoryService.updateByBo(bo));
+    }
+
+    /**
+     * 删除福礼分类
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:giftCategory:remove")
+    @Log(title = "福礼分类", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productGiftCategoryService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftCategoryLinkController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductGiftCategoryLinkVo;
+import org.dromara.product.domain.bo.ProductGiftCategoryLinkBo;
+import org.dromara.product.service.IProductGiftCategoryLinkService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 福礼分类商品关联
+ * 前端访问路由地址为:/product/giftCategoryLink
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/giftCategoryLink")
+public class ProductGiftCategoryLinkController extends BaseController {
+
+    private final IProductGiftCategoryLinkService productGiftCategoryLinkService;
+
+    /**
+     * 查询福礼分类商品关联列表
+     */
+    @SaCheckPermission("product:giftCategoryLink:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductGiftCategoryLinkVo> list(ProductGiftCategoryLinkBo bo, PageQuery pageQuery) {
+        return productGiftCategoryLinkService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出福礼分类商品关联列表
+     */
+    @SaCheckPermission("product:giftCategoryLink:export")
+    @Log(title = "福礼分类商品关联", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductGiftCategoryLinkBo bo, HttpServletResponse response) {
+        List<ProductGiftCategoryLinkVo> list = productGiftCategoryLinkService.queryList(bo);
+        ExcelUtil.exportExcel(list, "福礼分类商品关联", ProductGiftCategoryLinkVo.class, response);
+    }
+
+    /**
+     * 获取福礼分类商品关联详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:giftCategoryLink:query")
+    @GetMapping("/{id}")
+    public R<ProductGiftCategoryLinkVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productGiftCategoryLinkService.queryById(id));
+    }
+
+    /**
+     * 新增福礼分类商品关联
+     */
+    @SaCheckPermission("product:giftCategoryLink:add")
+    @Log(title = "福礼分类商品关联", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductGiftCategoryLinkBo bo) {
+        return toAjax(productGiftCategoryLinkService.insertByBo(bo));
+    }
+
+    /**
+     * 修改福礼分类商品关联
+     */
+    @SaCheckPermission("product:giftCategoryLink:edit")
+    @Log(title = "福礼分类商品关联", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductGiftCategoryLinkBo bo) {
+        return toAjax(productGiftCategoryLinkService.updateByBo(bo));
+    }
+
+    /**
+     * 删除福礼分类商品关联
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:giftCategoryLink:remove")
+    @Log(title = "福礼分类商品关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productGiftCategoryLinkService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftFloorController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductGiftFloorVo;
+import org.dromara.product.domain.bo.ProductGiftFloorBo;
+import org.dromara.product.service.IProductGiftFloorService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 福礼楼层
+ * 前端访问路由地址为:/product/giftFloor
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/giftFloor")
+public class ProductGiftFloorController extends BaseController {
+
+    private final IProductGiftFloorService productGiftFloorService;
+
+    /**
+     * 查询福礼楼层列表
+     */
+    @SaCheckPermission("product:giftFloor:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductGiftFloorVo> list(ProductGiftFloorBo bo, PageQuery pageQuery) {
+        return productGiftFloorService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出福礼楼层列表
+     */
+    @SaCheckPermission("product:giftFloor:export")
+    @Log(title = "福礼楼层", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductGiftFloorBo bo, HttpServletResponse response) {
+        List<ProductGiftFloorVo> list = productGiftFloorService.queryList(bo);
+        ExcelUtil.exportExcel(list, "福礼楼层", ProductGiftFloorVo.class, response);
+    }
+
+    /**
+     * 获取福礼楼层详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:giftFloor:query")
+    @GetMapping("/{id}")
+    public R<ProductGiftFloorVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productGiftFloorService.queryById(id));
+    }
+
+    /**
+     * 新增福礼楼层
+     */
+    @SaCheckPermission("product:giftFloor:add")
+    @Log(title = "福礼楼层", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductGiftFloorBo bo) {
+        return toAjax(productGiftFloorService.insertByBo(bo));
+    }
+
+    /**
+     * 修改福礼楼层
+     */
+    @SaCheckPermission("product:giftFloor:edit")
+    @Log(title = "福礼楼层", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductGiftFloorBo bo) {
+        return toAjax(productGiftFloorService.updateByBo(bo));
+    }
+
+    /**
+     * 删除福礼楼层
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:giftFloor:remove")
+    @Log(title = "福礼楼层", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productGiftFloorService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftFloorLinkController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductGiftFloorLinkVo;
+import org.dromara.product.domain.bo.ProductGiftFloorLinkBo;
+import org.dromara.product.service.IProductGiftFloorLinkService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 福礼楼层商品关联
+ * 前端访问路由地址为:/product/giftFloorLink
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/giftFloorLink")
+public class ProductGiftFloorLinkController extends BaseController {
+
+    private final IProductGiftFloorLinkService productGiftFloorLinkService;
+
+    /**
+     * 查询福礼楼层商品关联列表
+     */
+    @SaCheckPermission("product:giftFloorLink:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductGiftFloorLinkVo> list(ProductGiftFloorLinkBo bo, PageQuery pageQuery) {
+        return productGiftFloorLinkService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出福礼楼层商品关联列表
+     */
+    @SaCheckPermission("product:giftFloorLink:export")
+    @Log(title = "福礼楼层商品关联", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductGiftFloorLinkBo bo, HttpServletResponse response) {
+        List<ProductGiftFloorLinkVo> list = productGiftFloorLinkService.queryList(bo);
+        ExcelUtil.exportExcel(list, "福礼楼层商品关联", ProductGiftFloorLinkVo.class, response);
+    }
+
+    /**
+     * 获取福礼楼层商品关联详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:giftFloorLink:query")
+    @GetMapping("/{id}")
+    public R<ProductGiftFloorLinkVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productGiftFloorLinkService.queryById(id));
+    }
+
+    /**
+     * 新增福礼楼层商品关联
+     */
+    @SaCheckPermission("product:giftFloorLink:add")
+    @Log(title = "福礼楼层商品关联", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductGiftFloorLinkBo bo) {
+        return toAjax(productGiftFloorLinkService.insertByBo(bo));
+    }
+
+    /**
+     * 修改福礼楼层商品关联
+     */
+    @SaCheckPermission("product:giftFloorLink:edit")
+    @Log(title = "福礼楼层商品关联", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductGiftFloorLinkBo bo) {
+        return toAjax(productGiftFloorLinkService.updateByBo(bo));
+    }
+
+    /**
+     * 删除福礼楼层商品关联
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:giftFloorLink:remove")
+    @Log(title = "福礼楼层商品关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productGiftFloorLinkService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductGiftNoticeController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductGiftNoticeVo;
+import org.dromara.product.domain.bo.ProductGiftNoticeBo;
+import org.dromara.product.service.IProductGiftNoticeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 福礼公告
+ * 前端访问路由地址为:/product/giftNotice
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/giftNotice")
+public class ProductGiftNoticeController extends BaseController {
+
+    private final IProductGiftNoticeService productGiftNoticeService;
+
+    /**
+     * 查询福礼公告列表
+     */
+    @SaCheckPermission("product:giftNotice:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductGiftNoticeVo> list(ProductGiftNoticeBo bo, PageQuery pageQuery) {
+        return productGiftNoticeService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出福礼公告列表
+     */
+    @SaCheckPermission("product:giftNotice:export")
+    @Log(title = "福礼公告", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductGiftNoticeBo bo, HttpServletResponse response) {
+        List<ProductGiftNoticeVo> list = productGiftNoticeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "福礼公告", ProductGiftNoticeVo.class, response);
+    }
+
+    /**
+     * 获取福礼公告详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:giftNotice:query")
+    @GetMapping("/{id}")
+    public R<ProductGiftNoticeVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productGiftNoticeService.queryById(id));
+    }
+
+    /**
+     * 新增福礼公告
+     */
+    @SaCheckPermission("product:giftNotice:add")
+    @Log(title = "福礼公告", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductGiftNoticeBo bo) {
+        return toAjax(productGiftNoticeService.insertByBo(bo));
+    }
+
+    /**
+     * 修改福礼公告
+     */
+    @SaCheckPermission("product:giftNotice:edit")
+    @Log(title = "福礼公告", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductGiftNoticeBo bo) {
+        return toAjax(productGiftNoticeService.updateByBo(bo));
+    }
+
+    /**
+     * 删除福礼公告
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:giftNotice:remove")
+    @Log(title = "福礼公告", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productGiftNoticeService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductIndustrialFloorController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductIndustrialFloorVo;
+import org.dromara.product.domain.bo.ProductIndustrialFloorBo;
+import org.dromara.product.service.IProductIndustrialFloorService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工业品牌楼层主
+ * 前端访问路由地址为:/product/industrialFloor
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/industrialFloor")
+public class ProductIndustrialFloorController extends BaseController {
+
+    private final IProductIndustrialFloorService productIndustrialFloorService;
+
+    /**
+     * 查询工业品牌楼层主列表
+     */
+    @SaCheckPermission("product:industrialFloor:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductIndustrialFloorVo> list(ProductIndustrialFloorBo bo, PageQuery pageQuery) {
+        return productIndustrialFloorService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出工业品牌楼层主列表
+     */
+    @SaCheckPermission("product:industrialFloor:export")
+    @Log(title = "工业品牌楼层主", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductIndustrialFloorBo bo, HttpServletResponse response) {
+        List<ProductIndustrialFloorVo> list = productIndustrialFloorService.queryList(bo);
+        ExcelUtil.exportExcel(list, "工业品牌楼层主", ProductIndustrialFloorVo.class, response);
+    }
+
+    /**
+     * 获取工业品牌楼层主详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:industrialFloor:query")
+    @GetMapping("/{id}")
+    public R<ProductIndustrialFloorVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productIndustrialFloorService.queryById(id));
+    }
+
+    /**
+     * 新增工业品牌楼层主
+     */
+    @SaCheckPermission("product:industrialFloor:add")
+    @Log(title = "工业品牌楼层主", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductIndustrialFloorBo bo) {
+        return toAjax(productIndustrialFloorService.insertByBo(bo));
+    }
+
+    /**
+     * 修改工业品牌楼层主
+     */
+    @SaCheckPermission("product:industrialFloor:edit")
+    @Log(title = "工业品牌楼层主", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductIndustrialFloorBo bo) {
+        return toAjax(productIndustrialFloorService.updateByBo(bo));
+    }
+
+    /**
+     * 删除工业品牌楼层主
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:industrialFloor:remove")
+    @Log(title = "工业品牌楼层主", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productIndustrialFloorService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/ProductIndustrialFloorLinkController.java

@@ -0,0 +1,106 @@
+package org.dromara.product.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.product.domain.vo.ProductIndustrialFloorLinkVo;
+import org.dromara.product.domain.bo.ProductIndustrialFloorLinkBo;
+import org.dromara.product.service.IProductIndustrialFloorLinkService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工业品牌楼层关联
+ * 前端访问路由地址为:/product/industrialFloorLink
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/industrialFloorLink")
+public class ProductIndustrialFloorLinkController extends BaseController {
+
+    private final IProductIndustrialFloorLinkService productIndustrialFloorLinkService;
+
+    /**
+     * 查询工业品牌楼层关联列表
+     */
+    @SaCheckPermission("product:industrialFloorLink:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductIndustrialFloorLinkVo> list(ProductIndustrialFloorLinkBo bo, PageQuery pageQuery) {
+        return productIndustrialFloorLinkService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出工业品牌楼层关联列表
+     */
+    @SaCheckPermission("product:industrialFloorLink:export")
+    @Log(title = "工业品牌楼层关联", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductIndustrialFloorLinkBo bo, HttpServletResponse response) {
+        List<ProductIndustrialFloorLinkVo> list = productIndustrialFloorLinkService.queryList(bo);
+        ExcelUtil.exportExcel(list, "工业品牌楼层关联", ProductIndustrialFloorLinkVo.class, response);
+    }
+
+    /**
+     * 获取工业品牌楼层关联详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("product:industrialFloorLink:query")
+    @GetMapping("/{id}")
+    public R<ProductIndustrialFloorLinkVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(productIndustrialFloorLinkService.queryById(id));
+    }
+
+    /**
+     * 新增工业品牌楼层关联
+     */
+    @SaCheckPermission("product:industrialFloorLink:add")
+    @Log(title = "工业品牌楼层关联", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductIndustrialFloorLinkBo bo) {
+        return toAjax(productIndustrialFloorLinkService.insertByBo(bo));
+    }
+
+    /**
+     * 修改工业品牌楼层关联
+     */
+    @SaCheckPermission("product:industrialFloorLink:edit")
+    @Log(title = "工业品牌楼层关联", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductIndustrialFloorLinkBo bo) {
+        return toAjax(productIndustrialFloorLinkService.updateByBo(bo));
+    }
+
+    /**
+     * 删除工业品牌楼层关联
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("product:industrialFloorLink:remove")
+    @Log(title = "工业品牌楼层关联", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(productIndustrialFloorLinkService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 56 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryRecommended.java

@@ -0,0 +1,56 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import java.io.Serial;
+
+/**
+ * 工业推荐分类对象 product_category_recommended
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_category_recommended")
+public class ProductCategoryRecommended extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 分类标题
+     */
+    private String title;
+
+    /**
+     * 分类ID
+     */
+    private String categoryId;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 创建时间
+     */
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    private Date modify;
+
+
+}

+ 58 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductCategoryRecommendedLink.java

@@ -0,0 +1,58 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 工业推荐分类商品关联对象 product_category_recommended_link
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_category_recommended_link")
+public class ProductCategoryRecommendedLink extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 产品编号
+     */
+    private String productNo;
+
+    /**
+     * 分类ID
+     */
+    private Long categoryId;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 创建时间
+     */
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    private Date modify;
+
+
+}

+ 72 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductDecorationFloorLink.java

@@ -0,0 +1,72 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 平台装修楼层商品关联对象 product_decoration_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_decoration_floor_link")
+public class ProductDecorationFloorLink extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层编号
+     */
+    private Long floorNo;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 商品折扣
+     */
+    private String productDiscount;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 102 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftCategory.java

@@ -0,0 +1,102 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 福礼分类对象 product_gift_category
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_gift_category")
+public class ProductGiftCategory extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 分类编号
+     */
+    private String categoryNo;
+
+    /**
+     * 分类名称
+     */
+    private String categoryName;
+
+    /**
+     * 父级ID,0表示顶级
+     */
+    private String parentId;
+
+    /**
+     * 分类级别
+     */
+    private Long level;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否分类标签(1是 0否)
+     */
+    private String isCategoryTag;
+
+    /**
+     * 标签1
+     */
+    private String oneLabel1;
+
+    /**
+     * 标签2
+     */
+    private String oneLabel2;
+
+    /**
+     * 链接1
+     */
+    private String oneLink1;
+
+    /**
+     * 链接2
+     */
+    private String oneLink2;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 89 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftCategoryLink.java

@@ -0,0 +1,89 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+
+/**
+ * 福礼分类商品关联对象 product_gift_category_link
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_gift_category_link")
+public class ProductGiftCategoryLink extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 分类编号
+     */
+    private String categoryNo;
+
+    /**
+     * 分类名称
+     */
+    private String categoryName;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+    /**
+     * 商品图片
+     */
+    private String productImage;
+
+    /**
+     * 商品价格
+     */
+    private String price;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 86 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftFloor.java

@@ -0,0 +1,86 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 福礼楼层对象 product_gift_floor
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_gift_floor")
+public class ProductGiftFloor extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层名称
+     */
+    private String name;
+
+    /**
+     * 楼层标题
+     */
+    private String title;
+
+    /**
+     * 主图
+     */
+    private String mainImg;
+
+    /**
+     * 链接地址
+     */
+    private String link;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 楼层类型(1楼层广告 2热门定制 3为你推荐)
+     */
+    private Long type;
+
+
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 62 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftFloorLink.java

@@ -0,0 +1,62 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 福礼楼层商品关联对象 product_gift_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_gift_floor_link")
+public class ProductGiftFloorLink extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层ID
+     */
+    private Long floorId;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 81 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductGiftNotice.java

@@ -0,0 +1,81 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 福礼公告对象 product_gift_notice
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_gift_notice")
+public class ProductGiftNotice extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 公告标题
+     */
+    private String title;
+
+    /**
+     * Logo图片地址
+     */
+    private String logoUrl;
+
+    /**
+     * 链接地址
+     */
+    private String link;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 公告类型(1公告 2长图广告 3推荐广告 4Banner广告)
+     */
+    private Long type;
+
+
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0存在 1删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductIndustrialFloor.java

@@ -0,0 +1,77 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 工业品牌楼层主对象 product_industrial_floor
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_industrial_floor")
+public class ProductIndustrialFloor extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层名称
+     */
+    private String name;
+
+    /**
+     * 楼层图片
+     */
+    private String imageUrl;
+
+    /**
+     * 链接地址
+     */
+    private String link;
+
+    /**
+     * 品牌编号集合
+     */
+    private String brandNos;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 72 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/ProductIndustrialFloorLink.java

@@ -0,0 +1,72 @@
+package org.dromara.product.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 工业品牌楼层关联对象 product_industrial_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_industrial_floor_link")
+public class ProductIndustrialFloorLink extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层ID
+     */
+    private Long floorId;
+
+    /**
+     * 类型(1商品 2品牌)
+     */
+    private Long type;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 品牌编号
+     */
+    private String brandNo;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

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

@@ -42,6 +42,7 @@ public class ProductProgram extends TenantEntity {
     /**
      * 方案描述(注意:字段名为 SQL 关键字,建议未来重命名为 description)
      */
+    @TableField("`describe`")
     private String describe;
 
     /**

+ 55 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryRecommendedBo.java

@@ -0,0 +1,55 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductCategoryRecommended;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+
+/**
+ * 工业推荐分类业务对象 product_category_recommended
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductCategoryRecommended.class, reverseConvertGenerate = false)
+public class ProductCategoryRecommendedBo extends BaseEntity {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 分类标题
+     */
+    private String title;
+
+    /**
+     * 分类ID
+     */
+    private String categoryId;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 创建时间
+     */
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    private Date modify;
+
+
+}

+ 57 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductCategoryRecommendedLinkBo.java

@@ -0,0 +1,57 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductCategoryRecommendedLink;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 工业推荐分类商品关联业务对象 product_category_recommended_link
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductCategoryRecommendedLink.class, reverseConvertGenerate = false)
+public class ProductCategoryRecommendedLinkBo extends BaseEntity {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 产品编号
+     */
+    private String productNo;
+
+    /**
+     * 分类ID
+     */
+    private Long categoryId;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 创建时间
+     */
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+//    @NotNull(message = "修改时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date modify;
+
+
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductDecorationFloorLinkBo.java

@@ -0,0 +1,70 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductDecorationFloorLink;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 平台装修楼层商品关联业务对象 product_decoration_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductDecorationFloorLink.class, reverseConvertGenerate = false)
+public class ProductDecorationFloorLinkBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 楼层编号
+     */
+    private Long floorNo;
+
+    /**
+     * 商品编号
+     */
+//    @NotBlank(message = "商品编号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String productNo;
+
+    /**
+     * 商品折扣
+     */
+//    @NotBlank(message = "商品折扣不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String productDiscount;
+
+    /**
+     * 排序
+     */
+//    @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+//    @NotBlank(message = "是否显示(0否 1是)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+//    @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 100 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftCategoryBo.java

@@ -0,0 +1,100 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductGiftCategory;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 福礼分类业务对象 product_gift_category
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductGiftCategory.class, reverseConvertGenerate = false)
+public class ProductGiftCategoryBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 分类编号
+     */
+    private String categoryNo;
+
+    /**
+     * 分类名称
+     */
+    private String categoryName;
+
+    /**
+     * 父级ID,0表示顶级
+     */
+    private String parentId;
+
+    /**
+     * 分类级别
+     */
+    private Long level;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否分类标签(1是 0否)
+     */
+    private String isCategoryTag;
+
+    /**
+     * 标签1
+     */
+//    @NotBlank(message = "标签1不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneLabel1;
+
+    /**
+     * 标签2
+     */
+//    @NotBlank(message = "标签2不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneLabel2;
+
+    /**
+     * 链接1
+     */
+//    @NotBlank(message = "链接1不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneLink1;
+
+    /**
+     * 链接2
+     */
+//    @NotBlank(message = "链接2不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String oneLink2;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+//    @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 85 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftCategoryLinkBo.java

@@ -0,0 +1,85 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductGiftCategoryLink;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+/**
+ * 福礼分类商品关联业务对象 product_gift_category_link
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductGiftCategoryLink.class, reverseConvertGenerate = false)
+public class ProductGiftCategoryLinkBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 分类编号
+     */
+    private String categoryNo;
+
+    /**
+     * 分类名称
+     */
+//    @NotBlank(message = "分类名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String categoryName;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 商品名称
+     */
+    private String productName;
+
+    /**
+     * 商品图片
+     */
+//    @NotBlank(message = "商品图片不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String productImage;
+
+    /**
+     * 商品价格
+     */
+    private String price;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+//    @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 75 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftFloorBo.java

@@ -0,0 +1,75 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductGiftFloor;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 福礼楼层业务对象 product_gift_floor
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductGiftFloor.class, reverseConvertGenerate = false)
+public class ProductGiftFloorBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 楼层名称
+     */
+    @NotBlank(message = "楼层名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 楼层标题
+     */
+    private String title;
+
+    /**
+     * 主图
+     */
+    private String mainImg;
+
+    /**
+     * 链接地址
+     */
+    private String link;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    private String isShow;
+
+    /**
+     * 楼层类型(1楼层广告 2热门定制 3为你推荐)
+     */
+    private Long type;
+
+
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 56 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftFloorLinkBo.java

@@ -0,0 +1,56 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductGiftFloorLink;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 福礼楼层商品关联业务对象 product_gift_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductGiftFloorLink.class, reverseConvertGenerate = false)
+public class ProductGiftFloorLinkBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 楼层ID
+     */
+    private Long floorId;
+
+    /**
+     * 商品编号
+     */
+    private String productNo;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+//    @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 74 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductGiftNoticeBo.java

@@ -0,0 +1,74 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductGiftNotice;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 福礼公告业务对象 product_gift_notice
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductGiftNotice.class, reverseConvertGenerate = false)
+public class ProductGiftNoticeBo extends BaseEntity {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 公告标题
+     */
+    @NotBlank(message = "公告标题不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String title;
+
+    /**
+     * Logo图片地址
+     */
+//    @NotBlank(message = "Logo图片地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String logoUrl;
+
+    /**
+     * 链接地址
+     */
+    @NotBlank(message = "链接地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String link;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    @NotBlank(message = "是否显示(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long sort;
+
+    /**
+     * 公告类型(1公告 2长图广告 3推荐广告 4Banner广告)
+     */
+    private Long type;
+
+
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductIndustrialFloorBo.java

@@ -0,0 +1,77 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductIndustrialFloor;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 工业品牌楼层主业务对象 product_industrial_floor
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductIndustrialFloor.class, reverseConvertGenerate = false)
+public class ProductIndustrialFloorBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 楼层名称
+     */
+//    @NotBlank(message = "楼层名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 楼层图片
+     */
+//    @NotBlank(message = "楼层图片不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String imageUrl;
+
+    /**
+     * 链接地址
+     */
+//    @NotBlank(message = "链接地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String link;
+
+    /**
+     * 品牌编号集合
+     */
+//    @NotBlank(message = "品牌编号集合不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String brandNos;
+
+    /**
+     * 排序
+     */
+//    @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+//    @NotBlank(message = "是否显示(0否 1是)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+//    @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/ProductIndustrialFloorLinkBo.java

@@ -0,0 +1,70 @@
+package org.dromara.product.domain.bo;
+
+import org.dromara.product.domain.ProductIndustrialFloorLink;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 工业品牌楼层关联业务对象 product_industrial_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductIndustrialFloorLink.class, reverseConvertGenerate = false)
+public class ProductIndustrialFloorLinkBo extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 楼层ID
+     */
+    private Long floorId;
+
+    /**
+     * 类型(1商品 2品牌)
+     */
+//    @NotNull(message = "类型(1商品 2品牌)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long type;
+
+    /**
+     * 商品编号
+     */
+//    @NotBlank(message = "商品编号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String productNo;
+
+    /**
+     * 品牌编号
+     */
+//    @NotBlank(message = "品牌编号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String brandNo;
+
+    /**
+     * 排序
+     */
+//    @NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long sort;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+//    @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String status;
+
+    /**
+     * 备注
+     */
+//    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 57 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/bo/SiteProductBo.java

@@ -0,0 +1,57 @@
+package org.dromara.product.domain.bo;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 站点产品查询条件
+ *
+ * @author yoe
+ * @date 2025-12-26
+ */
+@Data
+public class SiteProductBo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /** 关键词(编号/名称模糊查询) */
+    private String keyword;
+
+    /** 产品编号 */
+    private String productNo;
+
+    /** 产品名称(模糊查询) */
+    private String productName;
+
+    /** 品牌ID */
+    private Long brandId;
+
+    /** 顶级分类ID */
+    private Long topCategoryId;
+
+    /** 中级分类ID */
+    private Long mediumCategoryId;
+
+    /** 底层分类ID */
+    private Long bottomCategoryId;
+
+    /** 福礼分类编号 */
+    private String giftCategoryNo;
+
+    /** 是否自营(1=是,0=否) */
+    private String isSelf;
+
+    /** 产品审核状态 */
+    private String productReviewStatus;
+
+    /** 商品状态(1=上架,0=下架) */
+    private String productStatus;
+
+    /** 商品类型 */
+    private String productType;
+
+    /** 数据来源 */
+    private String dataSource;
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryRecommendedLinkVo.java

@@ -0,0 +1,70 @@
+package org.dromara.product.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.product.domain.ProductCategoryRecommendedLink;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工业推荐分类商品关联视图对象 product_category_recommended_link
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductCategoryRecommendedLink.class)
+public class ProductCategoryRecommendedLinkVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ExcelProperty(value = "主键")
+    private Long id;
+
+    /**
+     * 产品编号
+     */
+    @ExcelProperty(value = "产品编号")
+    private String productNo;
+
+    /**
+     * 分类ID
+     */
+    @ExcelProperty(value = "分类ID")
+    private Long categoryId;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    @ExcelProperty(value = "修改时间")
+    private Date modify;
+
+
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductCategoryRecommendedVo.java

@@ -0,0 +1,70 @@
+package org.dromara.product.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.product.domain.ProductCategoryRecommended;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工业推荐分类视图对象 product_category_recommended
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductCategoryRecommended.class)
+public class ProductCategoryRecommendedVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ExcelProperty(value = "主键")
+    private Long id;
+
+    /**
+     * 分类标题
+     */
+    @ExcelProperty(value = "分类标题")
+    private String title;
+
+    /**
+     * 分类ID
+     */
+    @ExcelProperty(value = "分类ID")
+    private String categoryId;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date created;
+
+    /**
+     * 修改时间
+     */
+    @ExcelProperty(value = "修改时间")
+    private Date modify;
+
+
+}

+ 82 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductDecorationFloorLinkVo.java

@@ -0,0 +1,82 @@
+package org.dromara.product.domain.vo;
+
+import org.dromara.product.domain.ProductDecorationFloorLink;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 平台装修楼层商品关联视图对象 product_decoration_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductDecorationFloorLink.class)
+public class ProductDecorationFloorLinkVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 楼层编号
+     */
+    @ExcelProperty(value = "楼层编号")
+    private Long floorNo;
+
+    /**
+     * 商品编号
+     */
+    @ExcelProperty(value = "商品编号")
+    private String productNo;
+
+    /**
+     * 商品折扣
+     */
+    @ExcelProperty(value = "商品折扣")
+    private String productDiscount;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=否,1=是")
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 107 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftCategoryLinkVo.java

@@ -0,0 +1,107 @@
+package org.dromara.product.domain.vo;
+
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+import org.dromara.product.domain.ProductGiftCategoryLink;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 福礼分类商品关联视图对象 product_gift_category_link
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductGiftCategoryLink.class)
+public class ProductGiftCategoryLinkVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 分类编号
+     */
+    @ExcelProperty(value = "分类编号")
+    private String categoryNo;
+
+    /**
+     * 分类名称
+     */
+    @ExcelProperty(value = "分类名称")
+    private String categoryName;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=是,0=否")
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 商品编号
+     */
+    @ExcelProperty(value = "商品编号")
+    private String productNo;
+
+    /**
+     * 商品名称
+     */
+    @ExcelProperty(value = "商品名称")
+    private String productName;
+
+    /**
+     * 商品图片
+     */
+    @ExcelProperty(value = "商品图片")
+    private String productImage;
+
+    /**
+     * 商品图片Url
+     */
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "productImage")
+    private String productImageUrl;
+    /**
+     * 商品价格
+     */
+    @ExcelProperty(value = "商品价格")
+    private String price;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 119 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftCategoryVo.java

@@ -0,0 +1,119 @@
+package org.dromara.product.domain.vo;
+
+import org.dromara.product.domain.ProductGiftCategory;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 福礼分类视图对象 product_gift_category
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductGiftCategory.class)
+public class ProductGiftCategoryVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 分类编号
+     */
+    @ExcelProperty(value = "分类编号")
+    private String categoryNo;
+
+    /**
+     * 分类名称
+     */
+    @ExcelProperty(value = "分类名称")
+    private String categoryName;
+
+    /**
+     * 父级ID,0表示顶级
+     */
+    @ExcelProperty(value = "父级ID,0表示顶级")
+    private String parentId;
+
+    /**
+     * 分类级别
+     */
+    @ExcelProperty(value = "分类级别")
+    private Long level;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=是,0=否")
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 是否分类标签(1是 0否)
+     */
+    @ExcelProperty(value = "是否分类标签", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=是,0=否")
+    private String isCategoryTag;
+
+    /**
+     * 标签1
+     */
+    @ExcelProperty(value = "标签1")
+    private String oneLabel1;
+
+    /**
+     * 标签2
+     */
+    @ExcelProperty(value = "标签2")
+    private String oneLabel2;
+
+    /**
+     * 链接1
+     */
+    @ExcelProperty(value = "链接1")
+    private String oneLink1;
+
+    /**
+     * 链接2
+     */
+    @ExcelProperty(value = "链接2")
+    private String oneLink2;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 69 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftFloorLinkVo.java

@@ -0,0 +1,69 @@
+package org.dromara.product.domain.vo;
+
+import org.dromara.product.domain.ProductGiftFloorLink;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 福礼楼层商品关联视图对象 product_gift_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductGiftFloorLink.class)
+public class ProductGiftFloorLinkVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 楼层ID
+     */
+    @ExcelProperty(value = "楼层ID")
+    private Long floorId;
+
+    /**
+     * 商品编号
+     */
+    @ExcelProperty(value = "商品编号")
+    private String productNo;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 104 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftFloorVo.java

@@ -0,0 +1,104 @@
+package org.dromara.product.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.product.domain.ProductGiftFloor;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 福礼楼层视图对象 product_gift_floor
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductGiftFloor.class)
+public class ProductGiftFloorVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 楼层名称
+     */
+    @ExcelProperty(value = "楼层名称")
+    private String name;
+
+    /**
+     * 楼层标题
+     */
+    @ExcelProperty(value = "楼层标题")
+    private String title;
+
+    /**
+     * 主图
+     */
+    @ExcelProperty(value = "主图")
+    private String mainImg;
+
+    /**
+     * 链接地址
+     */
+    @ExcelProperty(value = "链接地址")
+    private String link;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=是,0=否")
+    private String isShow;
+
+    /**
+     * 楼层类型(1楼层广告 2热门定制 3为你推荐)
+     */
+    @ExcelProperty(value = "楼层类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=楼层广告,2=热门定制,3=为你推荐")
+    private Long type;
+
+
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+
+}

+ 86 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductGiftNoticeVo.java

@@ -0,0 +1,86 @@
+package org.dromara.product.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.product.domain.ProductGiftNotice;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 福礼公告视图对象 product_gift_notice
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductGiftNotice.class)
+public class ProductGiftNoticeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @ExcelProperty(value = "主键ID")
+    private Long id;
+
+    /**
+     * 公告标题
+     */
+    @ExcelProperty(value = "公告标题")
+    private String title;
+
+    /**
+     * Logo图片地址
+     */
+    @ExcelProperty(value = "Logo图片地址")
+    private String logoUrl;
+
+    /**
+     * 链接地址
+     */
+    @ExcelProperty(value = "链接地址")
+    private String link;
+
+    /**
+     * 是否显示(1是 0否)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=是,0=否")
+    private String isShow;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 公告类型(1公告 2长图广告 3推荐广告 4Banner广告)
+     */
+    @ExcelProperty(value = "公告类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=公告,2=长图广告,3=推荐广告,4=Banner广告")
+    private Long type;
+
+
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 82 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductIndustrialFloorLinkVo.java

@@ -0,0 +1,82 @@
+package org.dromara.product.domain.vo;
+
+import org.dromara.product.domain.ProductIndustrialFloorLink;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工业品牌楼层关联视图对象 product_industrial_floor_link
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductIndustrialFloorLink.class)
+public class ProductIndustrialFloorLinkVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 楼层ID
+     */
+    @ExcelProperty(value = "楼层ID")
+    private Long floorId;
+
+    /**
+     * 类型(1商品 2品牌)
+     */
+    @ExcelProperty(value = "类型", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=商品,2=品牌")
+    private Long type;
+
+    /**
+     * 商品编号
+     */
+    @ExcelProperty(value = "商品编号")
+    private String productNo;
+
+    /**
+     * 品牌编号
+     */
+    @ExcelProperty(value = "品牌编号")
+    private String brandNo;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 100 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductIndustrialFloorVo.java

@@ -0,0 +1,100 @@
+package org.dromara.product.domain.vo;
+
+import org.dromara.product.domain.ProductIndustrialFloor;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工业品牌楼层主视图对象 product_industrial_floor
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductIndustrialFloor.class)
+public class ProductIndustrialFloorVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 楼层名称
+     */
+    @ExcelProperty(value = "楼层名称")
+    private String name;
+
+    /**
+     * 楼层图片
+     */
+    @ExcelProperty(value = "楼层图片")
+    private String imageUrl;
+
+    /**
+     * 链接地址
+     */
+    @ExcelProperty(value = "链接地址")
+    private String link;
+
+    /**
+     * 品牌编号集合
+     */
+    @ExcelProperty(value = "品牌编号集合")
+    private String brandNos;
+
+    /**
+     * 排序
+     */
+    @ExcelProperty(value = "排序")
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    @ExcelProperty(value = "是否显示", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=否,1=是")
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ExcelProperty(value = "更新时间")
+    private Date updateTime;
+
+
+}

+ 115 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/SiteProductVo.java

@@ -0,0 +1,115 @@
+package org.dromara.product.domain.vo;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 站点产品列表视图对象
+ *
+ * @author yoe
+ * @date 2025-12-26
+ */
+@Data
+public class SiteProductVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private Long id;
+
+    /** 产品编号 */
+    private String productNo;
+
+    /** 产品名称 */
+    private String productName;
+
+    /** 产品图片 */
+    private String productImage;
+
+    /** 是否自营(1=是,0=否) */
+    private String isSelf;
+
+    /** 产品审核状态 */
+    private String productReviewStatus;
+
+    /** 商品状态(1=上架,0=下架) */
+    private String productStatus;
+
+    /** 商品类型 */
+    private String productType;
+
+    /** 数据来源 */
+    private String dataSource;
+
+    /** 市场价格 */
+    private BigDecimal marketPrice;
+
+    /** 会员价格 */
+    private BigDecimal memberPrice;
+
+    /** 最低销售价格 */
+    private BigDecimal minSellingPrice;
+
+    /** 采购价格 */
+    private BigDecimal purchasingPrice;
+
+    /** 最高采购价格 */
+    private BigDecimal maxPurchasePrice;
+
+    /** 总库存量 */
+    private Long totalInventory;
+
+    /** 当前可用库存 */
+    private Long nowInventory;
+
+    /** 虚拟库存 */
+    private Long virtualInventory;
+
+    /** 最小起订数量 */
+    private Long minOrderQuantity;
+
+    /** 品牌ID */
+    private Long brandId;
+
+    /** 品牌名称 */
+    private String brandName;
+
+    /** 顶级分类ID */
+    private Long topCategoryId;
+
+    /** 顶级分类名称 */
+    private String topCategoryName;
+
+    /** 中级分类ID */
+    private Long mediumCategoryId;
+
+    /** 中级分类名称 */
+    private String mediumCategoryName;
+
+    /** 底层分类ID */
+    private Long bottomCategoryId;
+
+    /** 底层分类名称 */
+    private String bottomCategoryName;
+
+    /** 福礼分类编号 */
+    private String giftCategoryNo;
+
+    /** 福礼分类名称 */
+    private String giftCategoryName;
+
+    /** 场景标签ID */
+    private Long sceneTagId;
+
+    /** 场景标签名称 */
+    private String sceneTagName;
+
+    /** 单位名称 */
+    private String unitName;
+
+    /** 备注 */
+    private String remark;
+}

+ 12 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductBaseMapper.java

@@ -1,7 +1,11 @@
 package org.dromara.product.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.dromara.product.domain.ProductBase;
+import org.dromara.product.domain.bo.SiteProductBo;
 import org.dromara.product.domain.vo.ProductBaseVo;
+import org.dromara.product.domain.vo.SiteProductVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
 /**
@@ -12,4 +16,12 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface ProductBaseMapper extends BaseMapperPlus<ProductBase, ProductBaseVo> {
 
+    /**
+     * 分页查询站点产品列表(联表查询)
+     *
+     * @param page 分页参数
+     * @param bo   查询条件
+     * @return 站点产品分页列表
+     */
+    Page<SiteProductVo> selectSiteProductPage(@Param("page") Page<SiteProductVo> page, @Param("bo") SiteProductBo bo);
 }

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductCategoryRecommendedLinkMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductCategoryRecommendedLink;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedLinkVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工业推荐分类商品关联Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+public interface ProductCategoryRecommendedLinkMapper extends BaseMapperPlus<ProductCategoryRecommendedLink, ProductCategoryRecommendedLinkVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductCategoryRecommendedMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductCategoryRecommended;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工业推荐分类Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+public interface ProductCategoryRecommendedMapper extends BaseMapperPlus<ProductCategoryRecommended, ProductCategoryRecommendedVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductDecorationFloorLinkMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductDecorationFloorLink;
+import org.dromara.product.domain.vo.ProductDecorationFloorLinkVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 平台装修楼层商品关联Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ProductDecorationFloorLinkMapper extends BaseMapperPlus<ProductDecorationFloorLink, ProductDecorationFloorLinkVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftCategoryLinkMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductGiftCategoryLink;
+import org.dromara.product.domain.vo.ProductGiftCategoryLinkVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 福礼分类商品关联Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface ProductGiftCategoryLinkMapper extends BaseMapperPlus<ProductGiftCategoryLink, ProductGiftCategoryLinkVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftCategoryMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductGiftCategory;
+import org.dromara.product.domain.vo.ProductGiftCategoryVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 福礼分类Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface ProductGiftCategoryMapper extends BaseMapperPlus<ProductGiftCategory, ProductGiftCategoryVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftFloorLinkMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductGiftFloorLink;
+import org.dromara.product.domain.vo.ProductGiftFloorLinkVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 福礼楼层商品关联Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface ProductGiftFloorLinkMapper extends BaseMapperPlus<ProductGiftFloorLink, ProductGiftFloorLinkVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftFloorMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductGiftFloor;
+import org.dromara.product.domain.vo.ProductGiftFloorVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 福礼楼层Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface ProductGiftFloorMapper extends BaseMapperPlus<ProductGiftFloor, ProductGiftFloorVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductGiftNoticeMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductGiftNotice;
+import org.dromara.product.domain.vo.ProductGiftNoticeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 福礼公告Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface ProductGiftNoticeMapper extends BaseMapperPlus<ProductGiftNotice, ProductGiftNoticeVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductIndustrialFloorLinkMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductIndustrialFloorLink;
+import org.dromara.product.domain.vo.ProductIndustrialFloorLinkVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工业品牌楼层关联Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ProductIndustrialFloorLinkMapper extends BaseMapperPlus<ProductIndustrialFloorLink, ProductIndustrialFloorLinkVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/mapper/ProductIndustrialFloorMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.product.mapper;
+
+import org.dromara.product.domain.ProductIndustrialFloor;
+import org.dromara.product.domain.vo.ProductIndustrialFloorVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工业品牌楼层主Mapper接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface ProductIndustrialFloorMapper extends BaseMapperPlus<ProductIndustrialFloor, ProductIndustrialFloorVo> {
+
+}

+ 11 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductBaseService.java

@@ -3,7 +3,9 @@ package org.dromara.product.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.dromara.product.domain.ProductBase;
 import org.dromara.product.domain.vo.ProductBaseVo;
+import org.dromara.product.domain.vo.SiteProductVo;
 import org.dromara.product.domain.bo.ProductBaseBo;
+import org.dromara.product.domain.bo.SiteProductBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
 
@@ -67,4 +69,13 @@ public interface IProductBaseService extends IService<ProductBase>{
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 分页查询站点产品列表(联表查询)
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 站点产品分页列表
+     */
+    TableDataInfo<SiteProductVo> querySiteProductPageList(SiteProductBo bo, PageQuery pageQuery);
 }

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductCategoryRecommendedLinkService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductCategoryRecommendedLink;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedLinkVo;
+import org.dromara.product.domain.bo.ProductCategoryRecommendedLinkBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工业推荐分类商品关联Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+public interface IProductCategoryRecommendedLinkService extends IService<ProductCategoryRecommendedLink>{
+
+    /**
+     * 查询工业推荐分类商品关联
+     *
+     * @param id 主键
+     * @return 工业推荐分类商品关联
+     */
+    ProductCategoryRecommendedLinkVo queryById(Long id);
+
+    /**
+     * 分页查询工业推荐分类商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业推荐分类商品关联分页列表
+     */
+    TableDataInfo<ProductCategoryRecommendedLinkVo> queryPageList(ProductCategoryRecommendedLinkBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的工业推荐分类商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 工业推荐分类商品关联列表
+     */
+    List<ProductCategoryRecommendedLinkVo> queryList(ProductCategoryRecommendedLinkBo bo);
+
+    /**
+     * 新增工业推荐分类商品关联
+     *
+     * @param bo 工业推荐分类商品关联
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductCategoryRecommendedLinkBo bo);
+
+    /**
+     * 修改工业推荐分类商品关联
+     *
+     * @param bo 工业推荐分类商品关联
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductCategoryRecommendedLinkBo bo);
+
+    /**
+     * 校验并批量删除工业推荐分类商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductCategoryRecommendedService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductCategoryRecommended;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedVo;
+import org.dromara.product.domain.bo.ProductCategoryRecommendedBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工业推荐分类Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+public interface IProductCategoryRecommendedService extends IService<ProductCategoryRecommended>{
+
+    /**
+     * 查询工业推荐分类
+     *
+     * @param id 主键
+     * @return 工业推荐分类
+     */
+    ProductCategoryRecommendedVo queryById(Long id);
+
+    /**
+     * 分页查询工业推荐分类列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业推荐分类分页列表
+     */
+    TableDataInfo<ProductCategoryRecommendedVo> queryPageList(ProductCategoryRecommendedBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的工业推荐分类列表
+     *
+     * @param bo 查询条件
+     * @return 工业推荐分类列表
+     */
+    List<ProductCategoryRecommendedVo> queryList(ProductCategoryRecommendedBo bo);
+
+    /**
+     * 新增工业推荐分类
+     *
+     * @param bo 工业推荐分类
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductCategoryRecommendedBo bo);
+
+    /**
+     * 修改工业推荐分类
+     *
+     * @param bo 工业推荐分类
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductCategoryRecommendedBo bo);
+
+    /**
+     * 校验并批量删除工业推荐分类信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductDecorationFloorLinkService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductDecorationFloorLink;
+import org.dromara.product.domain.vo.ProductDecorationFloorLinkVo;
+import org.dromara.product.domain.bo.ProductDecorationFloorLinkBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 平台装修楼层商品关联Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IProductDecorationFloorLinkService extends IService<ProductDecorationFloorLink>{
+
+    /**
+     * 查询平台装修楼层商品关联
+     *
+     * @param id 主键
+     * @return 平台装修楼层商品关联
+     */
+    ProductDecorationFloorLinkVo queryById(Long id);
+
+    /**
+     * 分页查询平台装修楼层商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 平台装修楼层商品关联分页列表
+     */
+    TableDataInfo<ProductDecorationFloorLinkVo> queryPageList(ProductDecorationFloorLinkBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的平台装修楼层商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 平台装修楼层商品关联列表
+     */
+    List<ProductDecorationFloorLinkVo> queryList(ProductDecorationFloorLinkBo bo);
+
+    /**
+     * 新增平台装修楼层商品关联
+     *
+     * @param bo 平台装修楼层商品关联
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductDecorationFloorLinkBo bo);
+
+    /**
+     * 修改平台装修楼层商品关联
+     *
+     * @param bo 平台装修楼层商品关联
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductDecorationFloorLinkBo bo);
+
+    /**
+     * 校验并批量删除平台装修楼层商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftCategoryLinkService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductGiftCategoryLink;
+import org.dromara.product.domain.vo.ProductGiftCategoryLinkVo;
+import org.dromara.product.domain.bo.ProductGiftCategoryLinkBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 福礼分类商品关联Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface IProductGiftCategoryLinkService extends IService<ProductGiftCategoryLink>{
+
+    /**
+     * 查询福礼分类商品关联
+     *
+     * @param id 主键
+     * @return 福礼分类商品关联
+     */
+    ProductGiftCategoryLinkVo queryById(Long id);
+
+    /**
+     * 分页查询福礼分类商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼分类商品关联分页列表
+     */
+    TableDataInfo<ProductGiftCategoryLinkVo> queryPageList(ProductGiftCategoryLinkBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的福礼分类商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 福礼分类商品关联列表
+     */
+    List<ProductGiftCategoryLinkVo> queryList(ProductGiftCategoryLinkBo bo);
+
+    /**
+     * 新增福礼分类商品关联
+     *
+     * @param bo 福礼分类商品关联
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductGiftCategoryLinkBo bo);
+
+    /**
+     * 修改福礼分类商品关联
+     *
+     * @param bo 福礼分类商品关联
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductGiftCategoryLinkBo bo);
+
+    /**
+     * 校验并批量删除福礼分类商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftCategoryService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductGiftCategory;
+import org.dromara.product.domain.vo.ProductGiftCategoryVo;
+import org.dromara.product.domain.bo.ProductGiftCategoryBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 福礼分类Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface IProductGiftCategoryService extends IService<ProductGiftCategory>{
+
+    /**
+     * 查询福礼分类
+     *
+     * @param id 主键
+     * @return 福礼分类
+     */
+    ProductGiftCategoryVo queryById(Long id);
+
+    /**
+     * 分页查询福礼分类列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼分类分页列表
+     */
+    TableDataInfo<ProductGiftCategoryVo> queryPageList(ProductGiftCategoryBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的福礼分类列表
+     *
+     * @param bo 查询条件
+     * @return 福礼分类列表
+     */
+    List<ProductGiftCategoryVo> queryList(ProductGiftCategoryBo bo);
+
+    /**
+     * 新增福礼分类
+     *
+     * @param bo 福礼分类
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductGiftCategoryBo bo);
+
+    /**
+     * 修改福礼分类
+     *
+     * @param bo 福礼分类
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductGiftCategoryBo bo);
+
+    /**
+     * 校验并批量删除福礼分类信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftFloorLinkService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductGiftFloorLink;
+import org.dromara.product.domain.vo.ProductGiftFloorLinkVo;
+import org.dromara.product.domain.bo.ProductGiftFloorLinkBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 福礼楼层商品关联Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface IProductGiftFloorLinkService extends IService<ProductGiftFloorLink>{
+
+    /**
+     * 查询福礼楼层商品关联
+     *
+     * @param id 主键
+     * @return 福礼楼层商品关联
+     */
+    ProductGiftFloorLinkVo queryById(Long id);
+
+    /**
+     * 分页查询福礼楼层商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼楼层商品关联分页列表
+     */
+    TableDataInfo<ProductGiftFloorLinkVo> queryPageList(ProductGiftFloorLinkBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的福礼楼层商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 福礼楼层商品关联列表
+     */
+    List<ProductGiftFloorLinkVo> queryList(ProductGiftFloorLinkBo bo);
+
+    /**
+     * 新增福礼楼层商品关联
+     *
+     * @param bo 福礼楼层商品关联
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductGiftFloorLinkBo bo);
+
+    /**
+     * 修改福礼楼层商品关联
+     *
+     * @param bo 福礼楼层商品关联
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductGiftFloorLinkBo bo);
+
+    /**
+     * 校验并批量删除福礼楼层商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftFloorService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductGiftFloor;
+import org.dromara.product.domain.vo.ProductGiftFloorVo;
+import org.dromara.product.domain.bo.ProductGiftFloorBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 福礼楼层Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface IProductGiftFloorService extends IService<ProductGiftFloor>{
+
+    /**
+     * 查询福礼楼层
+     *
+     * @param id 主键
+     * @return 福礼楼层
+     */
+    ProductGiftFloorVo queryById(Long id);
+
+    /**
+     * 分页查询福礼楼层列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼楼层分页列表
+     */
+    TableDataInfo<ProductGiftFloorVo> queryPageList(ProductGiftFloorBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的福礼楼层列表
+     *
+     * @param bo 查询条件
+     * @return 福礼楼层列表
+     */
+    List<ProductGiftFloorVo> queryList(ProductGiftFloorBo bo);
+
+    /**
+     * 新增福礼楼层
+     *
+     * @param bo 福礼楼层
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductGiftFloorBo bo);
+
+    /**
+     * 修改福礼楼层
+     *
+     * @param bo 福礼楼层
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductGiftFloorBo bo);
+
+    /**
+     * 校验并批量删除福礼楼层信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductGiftNoticeService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductGiftNotice;
+import org.dromara.product.domain.vo.ProductGiftNoticeVo;
+import org.dromara.product.domain.bo.ProductGiftNoticeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 福礼公告Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+public interface IProductGiftNoticeService extends IService<ProductGiftNotice>{
+
+    /**
+     * 查询福礼公告
+     *
+     * @param id 主键
+     * @return 福礼公告
+     */
+    ProductGiftNoticeVo queryById(Long id);
+
+    /**
+     * 分页查询福礼公告列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼公告分页列表
+     */
+    TableDataInfo<ProductGiftNoticeVo> queryPageList(ProductGiftNoticeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的福礼公告列表
+     *
+     * @param bo 查询条件
+     * @return 福礼公告列表
+     */
+    List<ProductGiftNoticeVo> queryList(ProductGiftNoticeBo bo);
+
+    /**
+     * 新增福礼公告
+     *
+     * @param bo 福礼公告
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductGiftNoticeBo bo);
+
+    /**
+     * 修改福礼公告
+     *
+     * @param bo 福礼公告
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductGiftNoticeBo bo);
+
+    /**
+     * 校验并批量删除福礼公告信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductIndustrialFloorLinkService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductIndustrialFloorLink;
+import org.dromara.product.domain.vo.ProductIndustrialFloorLinkVo;
+import org.dromara.product.domain.bo.ProductIndustrialFloorLinkBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工业品牌楼层关联Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IProductIndustrialFloorLinkService extends IService<ProductIndustrialFloorLink>{
+
+    /**
+     * 查询工业品牌楼层关联
+     *
+     * @param id 主键
+     * @return 工业品牌楼层关联
+     */
+    ProductIndustrialFloorLinkVo queryById(Long id);
+
+    /**
+     * 分页查询工业品牌楼层关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业品牌楼层关联分页列表
+     */
+    TableDataInfo<ProductIndustrialFloorLinkVo> queryPageList(ProductIndustrialFloorLinkBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的工业品牌楼层关联列表
+     *
+     * @param bo 查询条件
+     * @return 工业品牌楼层关联列表
+     */
+    List<ProductIndustrialFloorLinkVo> queryList(ProductIndustrialFloorLinkBo bo);
+
+    /**
+     * 新增工业品牌楼层关联
+     *
+     * @param bo 工业品牌楼层关联
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductIndustrialFloorLinkBo bo);
+
+    /**
+     * 修改工业品牌楼层关联
+     *
+     * @param bo 工业品牌楼层关联
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductIndustrialFloorLinkBo bo);
+
+    /**
+     * 校验并批量删除工业品牌楼层关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 70 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductIndustrialFloorService.java

@@ -0,0 +1,70 @@
+package org.dromara.product.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.dromara.product.domain.ProductIndustrialFloor;
+import org.dromara.product.domain.vo.ProductIndustrialFloorVo;
+import org.dromara.product.domain.bo.ProductIndustrialFloorBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 工业品牌楼层主Service接口
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+public interface IProductIndustrialFloorService extends IService<ProductIndustrialFloor>{
+
+    /**
+     * 查询工业品牌楼层主
+     *
+     * @param id 主键
+     * @return 工业品牌楼层主
+     */
+    ProductIndustrialFloorVo queryById(Long id);
+
+    /**
+     * 分页查询工业品牌楼层主列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业品牌楼层主分页列表
+     */
+    TableDataInfo<ProductIndustrialFloorVo> queryPageList(ProductIndustrialFloorBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的工业品牌楼层主列表
+     *
+     * @param bo 查询条件
+     * @return 工业品牌楼层主列表
+     */
+    List<ProductIndustrialFloorVo> queryList(ProductIndustrialFloorBo bo);
+
+    /**
+     * 新增工业品牌楼层主
+     *
+     * @param bo 工业品牌楼层主
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductIndustrialFloorBo bo);
+
+    /**
+     * 修改工业品牌楼层主
+     *
+     * @param bo 工业品牌楼层主
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductIndustrialFloorBo bo);
+
+    /**
+     * 校验并批量删除工业品牌楼层主信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

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

@@ -15,7 +15,9 @@ import org.dromara.product.mapper.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.dromara.product.domain.bo.ProductBaseBo;
+import org.dromara.product.domain.bo.SiteProductBo;
 import org.dromara.product.domain.vo.ProductBaseVo;
+import org.dromara.product.domain.vo.SiteProductVo;
 import org.dromara.product.domain.ProductBase;
 import org.dromara.product.domain.ProductExtend;
 import org.dromara.product.domain.ProductClassification;
@@ -641,4 +643,17 @@ public class ProductBaseServiceImpl  extends ServiceImpl<ProductBaseMapper, Prod
             saveProductCustomization(bo, productId);
         }
     }
+
+    /**
+     * 分页查询站点产品列表(联表查询)
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 站点产品分页列表
+     */
+    @Override
+    public TableDataInfo<SiteProductVo> querySiteProductPageList(SiteProductBo bo, PageQuery pageQuery) {
+        Page<SiteProductVo> page = baseMapper.selectSiteProductPage(pageQuery.build(), bo);
+        return TableDataInfo.build(page);
+    }
 }

+ 137 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductCategoryRecommendedLinkServiceImpl.java

@@ -0,0 +1,137 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductCategoryRecommendedLinkBo;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedLinkVo;
+import org.dromara.product.domain.ProductCategoryRecommendedLink;
+import org.dromara.product.mapper.ProductCategoryRecommendedLinkMapper;
+import org.dromara.product.service.IProductCategoryRecommendedLinkService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 工业推荐分类商品关联Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductCategoryRecommendedLinkServiceImpl  extends ServiceImpl<ProductCategoryRecommendedLinkMapper, ProductCategoryRecommendedLink> implements IProductCategoryRecommendedLinkService {
+
+    private final ProductCategoryRecommendedLinkMapper baseMapper;
+
+    /**
+     * 查询工业推荐分类商品关联
+     *
+     * @param id 主键
+     * @return 工业推荐分类商品关联
+     */
+    @Override
+    public ProductCategoryRecommendedLinkVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询工业推荐分类商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业推荐分类商品关联分页列表
+     */
+    @Override
+    public TableDataInfo<ProductCategoryRecommendedLinkVo> queryPageList(ProductCategoryRecommendedLinkBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductCategoryRecommendedLink> lqw = buildQueryWrapper(bo);
+        Page<ProductCategoryRecommendedLinkVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的工业推荐分类商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 工业推荐分类商品关联列表
+     */
+    @Override
+    public List<ProductCategoryRecommendedLinkVo> queryList(ProductCategoryRecommendedLinkBo bo) {
+        LambdaQueryWrapper<ProductCategoryRecommendedLink> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductCategoryRecommendedLink> buildQueryWrapper(ProductCategoryRecommendedLinkBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductCategoryRecommendedLink> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductCategoryRecommendedLink::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getProductNo()), ProductCategoryRecommendedLink::getProductNo, bo.getProductNo());
+        lqw.eq(bo.getCategoryId() != null, ProductCategoryRecommendedLink::getCategoryId, bo.getCategoryId());
+        lqw.eq(bo.getSort() != null, ProductCategoryRecommendedLink::getSort, bo.getSort());
+        lqw.eq(bo.getCreated() != null, ProductCategoryRecommendedLink::getCreated, bo.getCreated());
+        lqw.eq(bo.getModify() != null, ProductCategoryRecommendedLink::getModify, bo.getModify());
+        return lqw;
+    }
+
+    /**
+     * 新增工业推荐分类商品关联
+     *
+     * @param bo 工业推荐分类商品关联
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductCategoryRecommendedLinkBo bo) {
+        ProductCategoryRecommendedLink add = MapstructUtils.convert(bo, ProductCategoryRecommendedLink.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改工业推荐分类商品关联
+     *
+     * @param bo 工业推荐分类商品关联
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductCategoryRecommendedLinkBo bo) {
+        ProductCategoryRecommendedLink update = MapstructUtils.convert(bo, ProductCategoryRecommendedLink.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductCategoryRecommendedLink entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除工业推荐分类商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 142 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductCategoryRecommendedServiceImpl.java

@@ -0,0 +1,142 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductCategoryRecommendedBo;
+import org.dromara.product.domain.vo.ProductCategoryRecommendedVo;
+import org.dromara.product.domain.ProductCategoryRecommended;
+import org.dromara.product.mapper.ProductCategoryRecommendedMapper;
+import org.dromara.product.service.IProductCategoryRecommendedService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.Date;
+
+/**
+ * 工业推荐分类Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-22
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductCategoryRecommendedServiceImpl  extends ServiceImpl<ProductCategoryRecommendedMapper, ProductCategoryRecommended> implements IProductCategoryRecommendedService {
+
+    private final ProductCategoryRecommendedMapper baseMapper;
+
+    /**
+     * 查询工业推荐分类
+     *
+     * @param id 主键
+     * @return 工业推荐分类
+     */
+    @Override
+    public ProductCategoryRecommendedVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询工业推荐分类列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业推荐分类分页列表
+     */
+    @Override
+    public TableDataInfo<ProductCategoryRecommendedVo> queryPageList(ProductCategoryRecommendedBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductCategoryRecommended> lqw = buildQueryWrapper(bo);
+        Page<ProductCategoryRecommendedVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的工业推荐分类列表
+     *
+     * @param bo 查询条件
+     * @return 工业推荐分类列表
+     */
+    @Override
+    public List<ProductCategoryRecommendedVo> queryList(ProductCategoryRecommendedBo bo) {
+        LambdaQueryWrapper<ProductCategoryRecommended> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductCategoryRecommended> buildQueryWrapper(ProductCategoryRecommendedBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductCategoryRecommended> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductCategoryRecommended::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getTitle()), ProductCategoryRecommended::getTitle, bo.getTitle());
+        lqw.eq(StringUtils.isNotBlank(bo.getCategoryId()), ProductCategoryRecommended::getCategoryId, bo.getCategoryId());
+        lqw.eq(bo.getSort() != null, ProductCategoryRecommended::getSort, bo.getSort());
+        lqw.eq(bo.getCreated() != null, ProductCategoryRecommended::getCreated, bo.getCreated());
+        lqw.eq(bo.getModify() != null, ProductCategoryRecommended::getModify, bo.getModify());
+        return lqw;
+    }
+
+    /**
+     * 新增工业推荐分类
+     *
+     * @param bo 工业推荐分类
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductCategoryRecommendedBo bo) {
+        ProductCategoryRecommended add = MapstructUtils.convert(bo, ProductCategoryRecommended.class);
+        // 新增时设置创建时间
+        add.setCreated(new Date());
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改工业推荐分类
+     *
+     * @param bo 工业推荐分类
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductCategoryRecommendedBo bo) {
+        ProductCategoryRecommended update = MapstructUtils.convert(bo, ProductCategoryRecommended.class);
+        // 修改时设置修改时间
+        update.setModify(new Date());
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductCategoryRecommended entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除工业推荐分类信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 139 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductDecorationFloorLinkServiceImpl.java

@@ -0,0 +1,139 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductDecorationFloorLinkBo;
+import org.dromara.product.domain.vo.ProductDecorationFloorLinkVo;
+import org.dromara.product.domain.ProductDecorationFloorLink;
+import org.dromara.product.mapper.ProductDecorationFloorLinkMapper;
+import org.dromara.product.service.IProductDecorationFloorLinkService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 平台装修楼层商品关联Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductDecorationFloorLinkServiceImpl  extends ServiceImpl<ProductDecorationFloorLinkMapper, ProductDecorationFloorLink> implements IProductDecorationFloorLinkService {
+
+    private final ProductDecorationFloorLinkMapper baseMapper;
+
+    /**
+     * 查询平台装修楼层商品关联
+     *
+     * @param id 主键
+     * @return 平台装修楼层商品关联
+     */
+    @Override
+    public ProductDecorationFloorLinkVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询平台装修楼层商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 平台装修楼层商品关联分页列表
+     */
+    @Override
+    public TableDataInfo<ProductDecorationFloorLinkVo> queryPageList(ProductDecorationFloorLinkBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductDecorationFloorLink> lqw = buildQueryWrapper(bo);
+        Page<ProductDecorationFloorLinkVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的平台装修楼层商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 平台装修楼层商品关联列表
+     */
+    @Override
+    public List<ProductDecorationFloorLinkVo> queryList(ProductDecorationFloorLinkBo bo) {
+        LambdaQueryWrapper<ProductDecorationFloorLink> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductDecorationFloorLink> buildQueryWrapper(ProductDecorationFloorLinkBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductDecorationFloorLink> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductDecorationFloorLink::getId);
+        lqw.eq(bo.getFloorNo() != null, ProductDecorationFloorLink::getFloorNo, bo.getFloorNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getProductNo()), ProductDecorationFloorLink::getProductNo, bo.getProductNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getProductDiscount()), ProductDecorationFloorLink::getProductDiscount, bo.getProductDiscount());
+        lqw.eq(bo.getSort() != null, ProductDecorationFloorLink::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductDecorationFloorLink::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductDecorationFloorLink::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductDecorationFloorLink::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增平台装修楼层商品关联
+     *
+     * @param bo 平台装修楼层商品关联
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductDecorationFloorLinkBo bo) {
+        ProductDecorationFloorLink add = MapstructUtils.convert(bo, ProductDecorationFloorLink.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改平台装修楼层商品关联
+     *
+     * @param bo 平台装修楼层商品关联
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductDecorationFloorLinkBo bo) {
+        ProductDecorationFloorLink update = MapstructUtils.convert(bo, ProductDecorationFloorLink.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductDecorationFloorLink entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除平台装修楼层商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 142 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftCategoryLinkServiceImpl.java

@@ -0,0 +1,142 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductGiftCategoryLinkBo;
+import org.dromara.product.domain.vo.ProductGiftCategoryLinkVo;
+import org.dromara.product.domain.ProductGiftCategoryLink;
+import org.dromara.product.mapper.ProductGiftCategoryLinkMapper;
+import org.dromara.product.service.IProductGiftCategoryLinkService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 福礼分类商品关联Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductGiftCategoryLinkServiceImpl  extends ServiceImpl<ProductGiftCategoryLinkMapper, ProductGiftCategoryLink> implements IProductGiftCategoryLinkService {
+
+    private final ProductGiftCategoryLinkMapper baseMapper;
+
+    /**
+     * 查询福礼分类商品关联
+     *
+     * @param id 主键
+     * @return 福礼分类商品关联
+     */
+    @Override
+    public ProductGiftCategoryLinkVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询福礼分类商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼分类商品关联分页列表
+     */
+    @Override
+    public TableDataInfo<ProductGiftCategoryLinkVo> queryPageList(ProductGiftCategoryLinkBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductGiftCategoryLink> lqw = buildQueryWrapper(bo);
+        Page<ProductGiftCategoryLinkVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的福礼分类商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 福礼分类商品关联列表
+     */
+    @Override
+    public List<ProductGiftCategoryLinkVo> queryList(ProductGiftCategoryLinkBo bo) {
+        LambdaQueryWrapper<ProductGiftCategoryLink> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductGiftCategoryLink> buildQueryWrapper(ProductGiftCategoryLinkBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductGiftCategoryLink> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductGiftCategoryLink::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getCategoryNo()), ProductGiftCategoryLink::getCategoryNo, bo.getCategoryNo());
+        lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), ProductGiftCategoryLink::getCategoryName, bo.getCategoryName());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductGiftCategoryLink::getIsShow, bo.getIsShow());
+        lqw.eq(bo.getSort() != null, ProductGiftCategoryLink::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getProductNo()), ProductGiftCategoryLink::getProductNo, bo.getProductNo());
+        lqw.like(StringUtils.isNotBlank(bo.getProductName()), ProductGiftCategoryLink::getProductName, bo.getProductName());
+        lqw.eq(StringUtils.isNotBlank(bo.getProductImage()), ProductGiftCategoryLink::getProductImage, bo.getProductImage());
+        lqw.eq(StringUtils.isNotBlank(bo.getPrice()), ProductGiftCategoryLink::getPrice, bo.getPrice());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductGiftCategoryLink::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductGiftCategoryLink::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增福礼分类商品关联
+     *
+     * @param bo 福礼分类商品关联
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductGiftCategoryLinkBo bo) {
+        ProductGiftCategoryLink add = MapstructUtils.convert(bo, ProductGiftCategoryLink.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改福礼分类商品关联
+     *
+     * @param bo 福礼分类商品关联
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductGiftCategoryLinkBo bo) {
+        ProductGiftCategoryLink update = MapstructUtils.convert(bo, ProductGiftCategoryLink.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductGiftCategoryLink entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除福礼分类商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 145 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftCategoryServiceImpl.java

@@ -0,0 +1,145 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductGiftCategoryBo;
+import org.dromara.product.domain.vo.ProductGiftCategoryVo;
+import org.dromara.product.domain.ProductGiftCategory;
+import org.dromara.product.mapper.ProductGiftCategoryMapper;
+import org.dromara.product.service.IProductGiftCategoryService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 福礼分类Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductGiftCategoryServiceImpl  extends ServiceImpl<ProductGiftCategoryMapper, ProductGiftCategory> implements IProductGiftCategoryService {
+
+    private final ProductGiftCategoryMapper baseMapper;
+
+    /**
+     * 查询福礼分类
+     *
+     * @param id 主键
+     * @return 福礼分类
+     */
+    @Override
+    public ProductGiftCategoryVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询福礼分类列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼分类分页列表
+     */
+    @Override
+    public TableDataInfo<ProductGiftCategoryVo> queryPageList(ProductGiftCategoryBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductGiftCategory> lqw = buildQueryWrapper(bo);
+        Page<ProductGiftCategoryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的福礼分类列表
+     *
+     * @param bo 查询条件
+     * @return 福礼分类列表
+     */
+    @Override
+    public List<ProductGiftCategoryVo> queryList(ProductGiftCategoryBo bo) {
+        LambdaQueryWrapper<ProductGiftCategory> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductGiftCategory> buildQueryWrapper(ProductGiftCategoryBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductGiftCategory> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductGiftCategory::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getCategoryNo()), ProductGiftCategory::getCategoryNo, bo.getCategoryNo());
+        lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), ProductGiftCategory::getCategoryName, bo.getCategoryName());
+        lqw.eq(StringUtils.isNotBlank(bo.getParentId()), ProductGiftCategory::getParentId, bo.getParentId());
+        lqw.eq(bo.getLevel() != null, ProductGiftCategory::getLevel, bo.getLevel());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductGiftCategory::getIsShow, bo.getIsShow());
+        lqw.eq(bo.getSort() != null, ProductGiftCategory::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsCategoryTag()), ProductGiftCategory::getIsCategoryTag, bo.getIsCategoryTag());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneLabel1()), ProductGiftCategory::getOneLabel1, bo.getOneLabel1());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneLabel2()), ProductGiftCategory::getOneLabel2, bo.getOneLabel2());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneLink1()), ProductGiftCategory::getOneLink1, bo.getOneLink1());
+        lqw.eq(StringUtils.isNotBlank(bo.getOneLink2()), ProductGiftCategory::getOneLink2, bo.getOneLink2());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductGiftCategory::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductGiftCategory::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增福礼分类
+     *
+     * @param bo 福礼分类
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductGiftCategoryBo bo) {
+        ProductGiftCategory add = MapstructUtils.convert(bo, ProductGiftCategory.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改福礼分类
+     *
+     * @param bo 福礼分类
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductGiftCategoryBo bo) {
+        ProductGiftCategory update = MapstructUtils.convert(bo, ProductGiftCategory.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductGiftCategory entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除福礼分类信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 137 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftFloorLinkServiceImpl.java

@@ -0,0 +1,137 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductGiftFloorLinkBo;
+import org.dromara.product.domain.vo.ProductGiftFloorLinkVo;
+import org.dromara.product.domain.ProductGiftFloorLink;
+import org.dromara.product.mapper.ProductGiftFloorLinkMapper;
+import org.dromara.product.service.IProductGiftFloorLinkService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 福礼楼层商品关联Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductGiftFloorLinkServiceImpl  extends ServiceImpl<ProductGiftFloorLinkMapper, ProductGiftFloorLink> implements IProductGiftFloorLinkService {
+
+    private final ProductGiftFloorLinkMapper baseMapper;
+
+    /**
+     * 查询福礼楼层商品关联
+     *
+     * @param id 主键
+     * @return 福礼楼层商品关联
+     */
+    @Override
+    public ProductGiftFloorLinkVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询福礼楼层商品关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼楼层商品关联分页列表
+     */
+    @Override
+    public TableDataInfo<ProductGiftFloorLinkVo> queryPageList(ProductGiftFloorLinkBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductGiftFloorLink> lqw = buildQueryWrapper(bo);
+        Page<ProductGiftFloorLinkVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的福礼楼层商品关联列表
+     *
+     * @param bo 查询条件
+     * @return 福礼楼层商品关联列表
+     */
+    @Override
+    public List<ProductGiftFloorLinkVo> queryList(ProductGiftFloorLinkBo bo) {
+        LambdaQueryWrapper<ProductGiftFloorLink> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductGiftFloorLink> buildQueryWrapper(ProductGiftFloorLinkBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductGiftFloorLink> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductGiftFloorLink::getId);
+        lqw.eq(bo.getFloorId() != null, ProductGiftFloorLink::getFloorId, bo.getFloorId());
+        lqw.eq(StringUtils.isNotBlank(bo.getProductNo()), ProductGiftFloorLink::getProductNo, bo.getProductNo());
+        lqw.eq(bo.getSort() != null, ProductGiftFloorLink::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductGiftFloorLink::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductGiftFloorLink::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增福礼楼层商品关联
+     *
+     * @param bo 福礼楼层商品关联
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductGiftFloorLinkBo bo) {
+        ProductGiftFloorLink add = MapstructUtils.convert(bo, ProductGiftFloorLink.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改福礼楼层商品关联
+     *
+     * @param bo 福礼楼层商品关联
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductGiftFloorLinkBo bo) {
+        ProductGiftFloorLink update = MapstructUtils.convert(bo, ProductGiftFloorLink.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductGiftFloorLink entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除福礼楼层商品关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 141 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftFloorServiceImpl.java

@@ -0,0 +1,141 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductGiftFloorBo;
+import org.dromara.product.domain.vo.ProductGiftFloorVo;
+import org.dromara.product.domain.ProductGiftFloor;
+import org.dromara.product.mapper.ProductGiftFloorMapper;
+import org.dromara.product.service.IProductGiftFloorService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 福礼楼层Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductGiftFloorServiceImpl  extends ServiceImpl<ProductGiftFloorMapper, ProductGiftFloor> implements IProductGiftFloorService {
+
+    private final ProductGiftFloorMapper baseMapper;
+
+    /**
+     * 查询福礼楼层
+     *
+     * @param id 主键
+     * @return 福礼楼层
+     */
+    @Override
+    public ProductGiftFloorVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询福礼楼层列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼楼层分页列表
+     */
+    @Override
+    public TableDataInfo<ProductGiftFloorVo> queryPageList(ProductGiftFloorBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductGiftFloor> lqw = buildQueryWrapper(bo);
+        Page<ProductGiftFloorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的福礼楼层列表
+     *
+     * @param bo 查询条件
+     * @return 福礼楼层列表
+     */
+    @Override
+    public List<ProductGiftFloorVo> queryList(ProductGiftFloorBo bo) {
+        LambdaQueryWrapper<ProductGiftFloor> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductGiftFloor> buildQueryWrapper(ProductGiftFloorBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductGiftFloor> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductGiftFloor::getId);
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ProductGiftFloor::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getTitle()), ProductGiftFloor::getTitle, bo.getTitle());
+        lqw.eq(StringUtils.isNotBlank(bo.getMainImg()), ProductGiftFloor::getMainImg, bo.getMainImg());
+        lqw.eq(bo.getSort() != null, ProductGiftFloor::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductGiftFloor::getIsShow, bo.getIsShow());
+        lqw.eq(bo.getType() != null, ProductGiftFloor::getType, bo.getType());
+        lqw.eq(bo.getCreateTime() != null, ProductGiftFloor::getCreateTime, bo.getCreateTime());
+        lqw.eq(bo.getUpdateTime() != null, ProductGiftFloor::getUpdateTime, bo.getUpdateTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductGiftFloor::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增福礼楼层
+     *
+     * @param bo 福礼楼层
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductGiftFloorBo bo) {
+        ProductGiftFloor add = MapstructUtils.convert(bo, ProductGiftFloor.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改福礼楼层
+     *
+     * @param bo 福礼楼层
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductGiftFloorBo bo) {
+        ProductGiftFloor update = MapstructUtils.convert(bo, ProductGiftFloor.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductGiftFloor entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除福礼楼层信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 141 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductGiftNoticeServiceImpl.java

@@ -0,0 +1,141 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductGiftNoticeBo;
+import org.dromara.product.domain.vo.ProductGiftNoticeVo;
+import org.dromara.product.domain.ProductGiftNotice;
+import org.dromara.product.mapper.ProductGiftNoticeMapper;
+import org.dromara.product.service.IProductGiftNoticeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 福礼公告Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductGiftNoticeServiceImpl  extends ServiceImpl<ProductGiftNoticeMapper, ProductGiftNotice> implements IProductGiftNoticeService {
+
+    private final ProductGiftNoticeMapper baseMapper;
+
+    /**
+     * 查询福礼公告
+     *
+     * @param id 主键
+     * @return 福礼公告
+     */
+    @Override
+    public ProductGiftNoticeVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询福礼公告列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 福礼公告分页列表
+     */
+    @Override
+    public TableDataInfo<ProductGiftNoticeVo> queryPageList(ProductGiftNoticeBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductGiftNotice> lqw = buildQueryWrapper(bo);
+        Page<ProductGiftNoticeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的福礼公告列表
+     *
+     * @param bo 查询条件
+     * @return 福礼公告列表
+     */
+    @Override
+    public List<ProductGiftNoticeVo> queryList(ProductGiftNoticeBo bo) {
+        LambdaQueryWrapper<ProductGiftNotice> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductGiftNotice> buildQueryWrapper(ProductGiftNoticeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductGiftNotice> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductGiftNotice::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getTitle()), ProductGiftNotice::getTitle, bo.getTitle());
+        lqw.eq(StringUtils.isNotBlank(bo.getLogoUrl()), ProductGiftNotice::getLogoUrl, bo.getLogoUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getLink()), ProductGiftNotice::getLink, bo.getLink());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductGiftNotice::getIsShow, bo.getIsShow());
+        lqw.eq(bo.getSort() != null, ProductGiftNotice::getSort, bo.getSort());
+        lqw.eq(bo.getType() != null, ProductGiftNotice::getType, bo.getType());
+        lqw.eq(bo.getCreateTime() != null, ProductGiftNotice::getCreateTime, bo.getCreateTime());
+        lqw.eq(bo.getUpdateTime() != null, ProductGiftNotice::getUpdateTime, bo.getUpdateTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductGiftNotice::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增福礼公告
+     *
+     * @param bo 福礼公告
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductGiftNoticeBo bo) {
+        ProductGiftNotice add = MapstructUtils.convert(bo, ProductGiftNotice.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改福礼公告
+     *
+     * @param bo 福礼公告
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductGiftNoticeBo bo) {
+        ProductGiftNotice update = MapstructUtils.convert(bo, ProductGiftNotice.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductGiftNotice entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除福礼公告信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 139 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductIndustrialFloorLinkServiceImpl.java

@@ -0,0 +1,139 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductIndustrialFloorLinkBo;
+import org.dromara.product.domain.vo.ProductIndustrialFloorLinkVo;
+import org.dromara.product.domain.ProductIndustrialFloorLink;
+import org.dromara.product.mapper.ProductIndustrialFloorLinkMapper;
+import org.dromara.product.service.IProductIndustrialFloorLinkService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 工业品牌楼层关联Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductIndustrialFloorLinkServiceImpl  extends ServiceImpl<ProductIndustrialFloorLinkMapper, ProductIndustrialFloorLink> implements IProductIndustrialFloorLinkService {
+
+    private final ProductIndustrialFloorLinkMapper baseMapper;
+
+    /**
+     * 查询工业品牌楼层关联
+     *
+     * @param id 主键
+     * @return 工业品牌楼层关联
+     */
+    @Override
+    public ProductIndustrialFloorLinkVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询工业品牌楼层关联列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业品牌楼层关联分页列表
+     */
+    @Override
+    public TableDataInfo<ProductIndustrialFloorLinkVo> queryPageList(ProductIndustrialFloorLinkBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductIndustrialFloorLink> lqw = buildQueryWrapper(bo);
+        Page<ProductIndustrialFloorLinkVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的工业品牌楼层关联列表
+     *
+     * @param bo 查询条件
+     * @return 工业品牌楼层关联列表
+     */
+    @Override
+    public List<ProductIndustrialFloorLinkVo> queryList(ProductIndustrialFloorLinkBo bo) {
+        LambdaQueryWrapper<ProductIndustrialFloorLink> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductIndustrialFloorLink> buildQueryWrapper(ProductIndustrialFloorLinkBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductIndustrialFloorLink> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductIndustrialFloorLink::getId);
+        lqw.eq(bo.getFloorId() != null, ProductIndustrialFloorLink::getFloorId, bo.getFloorId());
+        lqw.eq(bo.getType() != null, ProductIndustrialFloorLink::getType, bo.getType());
+        lqw.eq(StringUtils.isNotBlank(bo.getProductNo()), ProductIndustrialFloorLink::getProductNo, bo.getProductNo());
+        lqw.eq(StringUtils.isNotBlank(bo.getBrandNo()), ProductIndustrialFloorLink::getBrandNo, bo.getBrandNo());
+        lqw.eq(bo.getSort() != null, ProductIndustrialFloorLink::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductIndustrialFloorLink::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductIndustrialFloorLink::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增工业品牌楼层关联
+     *
+     * @param bo 工业品牌楼层关联
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductIndustrialFloorLinkBo bo) {
+        ProductIndustrialFloorLink add = MapstructUtils.convert(bo, ProductIndustrialFloorLink.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改工业品牌楼层关联
+     *
+     * @param bo 工业品牌楼层关联
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductIndustrialFloorLinkBo bo) {
+        ProductIndustrialFloorLink update = MapstructUtils.convert(bo, ProductIndustrialFloorLink.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductIndustrialFloorLink entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除工业品牌楼层关联信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 140 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductIndustrialFloorServiceImpl.java

@@ -0,0 +1,140 @@
+package org.dromara.product.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.dromara.product.domain.bo.ProductIndustrialFloorBo;
+import org.dromara.product.domain.vo.ProductIndustrialFloorVo;
+import org.dromara.product.domain.ProductIndustrialFloor;
+import org.dromara.product.mapper.ProductIndustrialFloorMapper;
+import org.dromara.product.service.IProductIndustrialFloorService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 工业品牌楼层主Service业务层处理
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductIndustrialFloorServiceImpl  extends ServiceImpl<ProductIndustrialFloorMapper, ProductIndustrialFloor> implements IProductIndustrialFloorService {
+
+    private final ProductIndustrialFloorMapper baseMapper;
+
+    /**
+     * 查询工业品牌楼层主
+     *
+     * @param id 主键
+     * @return 工业品牌楼层主
+     */
+    @Override
+    public ProductIndustrialFloorVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询工业品牌楼层主列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 工业品牌楼层主分页列表
+     */
+    @Override
+    public TableDataInfo<ProductIndustrialFloorVo> queryPageList(ProductIndustrialFloorBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductIndustrialFloor> lqw = buildQueryWrapper(bo);
+        Page<ProductIndustrialFloorVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的工业品牌楼层主列表
+     *
+     * @param bo 查询条件
+     * @return 工业品牌楼层主列表
+     */
+    @Override
+    public List<ProductIndustrialFloorVo> queryList(ProductIndustrialFloorBo bo) {
+        LambdaQueryWrapper<ProductIndustrialFloor> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductIndustrialFloor> buildQueryWrapper(ProductIndustrialFloorBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductIndustrialFloor> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(ProductIndustrialFloor::getId);
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ProductIndustrialFloor::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getImageUrl()), ProductIndustrialFloor::getImageUrl, bo.getImageUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getLink()), ProductIndustrialFloor::getLink, bo.getLink());
+        lqw.eq(StringUtils.isNotBlank(bo.getBrandNos()), ProductIndustrialFloor::getBrandNos, bo.getBrandNos());
+        lqw.eq(bo.getSort() != null, ProductIndustrialFloor::getSort, bo.getSort());
+        lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductIndustrialFloor::getIsShow, bo.getIsShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductIndustrialFloor::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProductIndustrialFloor::getPlatformCode, bo.getPlatformCode());
+        return lqw;
+    }
+
+    /**
+     * 新增工业品牌楼层主
+     *
+     * @param bo 工业品牌楼层主
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductIndustrialFloorBo bo) {
+        ProductIndustrialFloor add = MapstructUtils.convert(bo, ProductIndustrialFloor.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改工业品牌楼层主
+     *
+     * @param bo 工业品牌楼层主
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductIndustrialFloorBo bo) {
+        ProductIndustrialFloor update = MapstructUtils.convert(bo, ProductIndustrialFloor.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductIndustrialFloor entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除工业品牌楼层主信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

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

@@ -76,7 +76,7 @@ public class ProductProgramServiceImpl  extends ServiceImpl<ProductProgramMapper
         LambdaQueryWrapper<ProductProgram> lqw = Wrappers.lambdaQuery();
         lqw.orderByAsc(ProductProgram::getId);
         lqw.eq(StringUtils.isNotBlank(bo.getProgramNo()), ProductProgram::getProgramNo, bo.getProgramNo());
-        lqw.eq(StringUtils.isNotBlank(bo.getTitle()), ProductProgram::getTitle, bo.getTitle());
+        lqw.like(StringUtils.isNotBlank(bo.getTitle()), ProductProgram::getTitle, bo.getTitle());
         lqw.eq(StringUtils.isNotBlank(bo.getDescribe()), ProductProgram::getDescribe, bo.getDescribe());
         lqw.eq(StringUtils.isNotBlank(bo.getCategory()), ProductProgram::getCategory, bo.getCategory());
         lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), ProductProgram::getIsShow, bo.getIsShow());

+ 69 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductBaseMapper.xml

@@ -4,4 +4,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.product.mapper.ProductBaseMapper">
 
+    <!-- 站点产品列表查询(联表查询) -->
+    <select id="selectSiteProductPage" resultType="org.dromara.product.domain.vo.SiteProductVo">
+        SELECT
+            b.id,
+            b.product_no AS productNo,
+            b.item_name AS productName,
+            b.product_image AS productImage,
+            b.is_self AS isSelf,
+            b.product_review_status AS productReviewStatus,
+            b.product_status AS productStatus,
+            p.market_price AS marketPrice,
+            p.member_price AS memberPrice,
+            p.min_selling_price AS minSellingPrice,
+            p.purchasing_price AS purchasingPrice,
+            p.max_purchase_price AS maxPurchasePrice,
+            p.total_inventory AS totalInventory,
+            p.now_inventory AS nowInventory,
+            p.virtual_inventory AS virtualInventory,
+            p.min_order_quantity AS minOrderQuantity,
+            b.brand_id AS brandId,
+            br.brand_name AS brandName,
+            b.top_category_id AS topCategoryId,
+            tc.category_name AS topCategoryName,
+            b.medium_category_id AS mediumCategoryId,
+            mc.category_name AS mediumCategoryName,
+            b.bottom_category_id AS bottomCategoryId,
+            bc.category_name AS bottomCategoryName,
+            gcl.category_name AS giftCategoryName,
+            b.remark
+        FROM product_base b
+        LEFT JOIN product_price_inventory p ON b.id = p.product_id
+        LEFT JOIN product_brand br ON b.brand_id = br.id
+        LEFT JOIN product_category tc ON b.top_category_id = tc.id
+        LEFT JOIN product_category mc ON b.medium_category_id = mc.id
+        LEFT JOIN product_category bc ON b.bottom_category_id = bc.id
+        LEFT JOIN product_gift_category_link gcl ON b.product_no = gcl.product_no AND gcl.del_flag = '0'
+        <where>
+            b.del_flag = '0'
+            <if test="bo.keyword != null and bo.keyword != ''">
+                AND (b.product_no LIKE CONCAT('%', #{bo.keyword}, '%') OR b.item_name LIKE CONCAT('%', #{bo.keyword}, '%'))
+            </if>
+            <if test="bo.brandId != null">
+                AND b.brand_id = #{bo.brandId}
+            </if>
+            <if test="bo.topCategoryId != null">
+                AND b.top_category_id = #{bo.topCategoryId}
+            </if>
+            <if test="bo.mediumCategoryId != null">
+                AND b.medium_category_id = #{bo.mediumCategoryId}
+            </if>
+            <if test="bo.bottomCategoryId != null">
+                AND b.bottom_category_id = #{bo.bottomCategoryId}
+            </if>
+            <if test="bo.giftCategoryNo != null and bo.giftCategoryNo != ''">
+                AND gcl.category_no = #{bo.giftCategoryNo}
+            </if>
+            <if test="bo.isSelf != null and bo.isSelf != ''">
+                AND b.is_self = #{bo.isSelf}
+            </if>
+            <if test="bo.productReviewStatus != null and bo.productReviewStatus != ''">
+                AND b.product_review_status = #{bo.productReviewStatus}
+            </if>
+            <if test="bo.productStatus != null and bo.productStatus != ''">
+                AND b.product_status = #{bo.productStatus}
+            </if>
+        </where>
+        ORDER BY b.create_time DESC
+    </select>
+
 </mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductCategoryRecommendedLinkMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductCategoryRecommendedLinkMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductCategoryRecommendedMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.ProductCategoryRecommendedMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductDecorationFloorLinkMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductDecorationFloorLinkMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftCategoryLinkMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductGiftCategoryLinkMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftCategoryMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductGiftCategoryMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftFloorLinkMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductGiftFloorLinkMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftFloorMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductGiftFloorMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductGiftNoticeMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductGiftNoticeMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductIndustrialFloorLinkMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductIndustrialFloorLinkMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/resources/mapper/product/ProductIndustrialFloorMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.product.mapper.ProductIndustrialFloorMapper">
+
+</mapper>

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorAdvertManageController.java

@@ -0,0 +1,106 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SysFloorAdvertManageVo;
+import org.dromara.system.domain.bo.SysFloorAdvertManageBo;
+import org.dromara.system.service.ISysFloorAdvertManageService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 楼层广告管理
+ * 前端访问路由地址为:/system/floorAdvertManage
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/floorAdvertManage")
+public class SysFloorAdvertManageController extends BaseController {
+
+    private final ISysFloorAdvertManageService sysFloorAdvertManageService;
+
+    /**
+     * 查询楼层广告管理列表
+     */
+    @SaCheckPermission("system:floorAdvertManage:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysFloorAdvertManageVo> list(SysFloorAdvertManageBo bo, PageQuery pageQuery) {
+        return sysFloorAdvertManageService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出楼层广告管理列表
+     */
+    @SaCheckPermission("system:floorAdvertManage:export")
+    @Log(title = "楼层广告管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysFloorAdvertManageBo bo, HttpServletResponse response) {
+        List<SysFloorAdvertManageVo> list = sysFloorAdvertManageService.queryList(bo);
+        ExcelUtil.exportExcel(list, "楼层广告管理", SysFloorAdvertManageVo.class, response);
+    }
+
+    /**
+     * 获取楼层广告管理详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:floorAdvertManage:query")
+    @GetMapping("/{id}")
+    public R<SysFloorAdvertManageVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(sysFloorAdvertManageService.queryById(id));
+    }
+
+    /**
+     * 新增楼层广告管理
+     */
+    @SaCheckPermission("system:floorAdvertManage:add")
+    @Log(title = "楼层广告管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SysFloorAdvertManageBo bo) {
+        return toAjax(sysFloorAdvertManageService.insertByBo(bo));
+    }
+
+    /**
+     * 修改楼层广告管理
+     */
+    @SaCheckPermission("system:floorAdvertManage:edit")
+    @Log(title = "楼层广告管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysFloorAdvertManageBo bo) {
+        return toAjax(sysFloorAdvertManageService.updateByBo(bo));
+    }
+
+    /**
+     * 删除楼层广告管理
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:floorAdvertManage:remove")
+    @Log(title = "楼层广告管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(sysFloorAdvertManageService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorAdvertiseController.java

@@ -0,0 +1,106 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SysFloorAdvertiseVo;
+import org.dromara.system.domain.bo.SysFloorAdvertiseBo;
+import org.dromara.system.service.ISysFloorAdvertiseService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 楼层广告
+ * 前端访问路由地址为:/system/floorAdvertise
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/floorAdvertise")
+public class SysFloorAdvertiseController extends BaseController {
+
+    private final ISysFloorAdvertiseService sysFloorAdvertiseService;
+
+    /**
+     * 查询楼层广告列表
+     */
+    @SaCheckPermission("system:floorAdvertise:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysFloorAdvertiseVo> list(SysFloorAdvertiseBo bo, PageQuery pageQuery) {
+        return sysFloorAdvertiseService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出楼层广告列表
+     */
+    @SaCheckPermission("system:floorAdvertise:export")
+    @Log(title = "楼层广告", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysFloorAdvertiseBo bo, HttpServletResponse response) {
+        List<SysFloorAdvertiseVo> list = sysFloorAdvertiseService.queryList(bo);
+        ExcelUtil.exportExcel(list, "楼层广告", SysFloorAdvertiseVo.class, response);
+    }
+
+    /**
+     * 获取楼层广告详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:floorAdvertise:query")
+    @GetMapping("/{id}")
+    public R<SysFloorAdvertiseVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(sysFloorAdvertiseService.queryById(id));
+    }
+
+    /**
+     * 新增楼层广告
+     */
+    @SaCheckPermission("system:floorAdvertise:add")
+    @Log(title = "楼层广告", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SysFloorAdvertiseBo bo) {
+        return toAjax(sysFloorAdvertiseService.insertByBo(bo));
+    }
+
+    /**
+     * 修改楼层广告
+     */
+    @SaCheckPermission("system:floorAdvertise:edit")
+    @Log(title = "楼层广告", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysFloorAdvertiseBo bo) {
+        return toAjax(sysFloorAdvertiseService.updateByBo(bo));
+    }
+
+    /**
+     * 删除楼层广告
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:floorAdvertise:remove")
+    @Log(title = "楼层广告", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(sysFloorAdvertiseService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 110 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorController.java

@@ -0,0 +1,110 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SysFloorVo;
+import org.dromara.system.domain.bo.SysFloorBo;
+import org.dromara.system.service.ISysFloorService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 分类楼层主
+ * 前端访问路由地址为:/system/floor
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/floor")
+public class SysFloorController extends BaseController {
+
+    private final ISysFloorService sysFloorService;
+
+    /**
+     * 查询分类楼层主列表
+     */
+    @SaCheckPermission("system:floor:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysFloorVo> list(SysFloorBo bo, PageQuery pageQuery) {
+        return sysFloorService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出分类楼层主列表
+     */
+    @SaCheckPermission("system:floor:export")
+    @Log(title = "分类楼层主", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysFloorBo bo, HttpServletResponse response) {
+        List<SysFloorVo> list = sysFloorService.queryList(bo);
+        ExcelUtil.exportExcel(list, "分类楼层主", SysFloorVo.class, response);
+    }
+
+    /**
+     * 获取分类楼层主详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:floor:query")
+    @GetMapping("/{id}")
+    public R<SysFloorVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(sysFloorService.queryById(id));
+    }
+
+    /**
+     * 新增分类楼层主
+     */
+    @SaCheckPermission("system:floor:add")
+    @Log(title = "分类楼层主", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<SysFloorVo> add(@Validated(AddGroup.class) @RequestBody SysFloorBo bo) {
+        Boolean success = sysFloorService.insertByBo(bo);
+        if (success && bo.getId() != null) {
+            return R.ok(sysFloorService.queryById(bo.getId()));
+        }
+        return success ? R.ok() : R.fail();
+    }
+
+    /**
+     * 修改分类楼层主
+     */
+    @SaCheckPermission("system:floor:edit")
+    @Log(title = "分类楼层主", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysFloorBo bo) {
+        return toAjax(sysFloorService.updateByBo(bo));
+    }
+
+    /**
+     * 删除分类楼层主
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:floor:remove")
+    @Log(title = "分类楼层主", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(sysFloorService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorLabelController.java

@@ -0,0 +1,106 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SysFloorLabelVo;
+import org.dromara.system.domain.bo.SysFloorLabelBo;
+import org.dromara.system.service.ISysFloorLabelService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 楼层标签
+ * 前端访问路由地址为:/system/floorLabel
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/floorLabel")
+public class SysFloorLabelController extends BaseController {
+
+    private final ISysFloorLabelService sysFloorLabelService;
+
+    /**
+     * 查询楼层标签列表
+     */
+    @SaCheckPermission("system:floorLabel:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysFloorLabelVo> list(SysFloorLabelBo bo, PageQuery pageQuery) {
+        return sysFloorLabelService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出楼层标签列表
+     */
+    @SaCheckPermission("system:floorLabel:export")
+    @Log(title = "楼层标签", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysFloorLabelBo bo, HttpServletResponse response) {
+        List<SysFloorLabelVo> list = sysFloorLabelService.queryList(bo);
+        ExcelUtil.exportExcel(list, "楼层标签", SysFloorLabelVo.class, response);
+    }
+
+    /**
+     * 获取楼层标签详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:floorLabel:query")
+    @GetMapping("/{id}")
+    public R<SysFloorLabelVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(sysFloorLabelService.queryById(id));
+    }
+
+    /**
+     * 新增楼层标签
+     */
+    @SaCheckPermission("system:floorLabel:add")
+    @Log(title = "楼层标签", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SysFloorLabelBo bo) {
+        return toAjax(sysFloorLabelService.insertByBo(bo));
+    }
+
+    /**
+     * 修改楼层标签
+     */
+    @SaCheckPermission("system:floorLabel:edit")
+    @Log(title = "楼层标签", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysFloorLabelBo bo) {
+        return toAjax(sysFloorLabelService.updateByBo(bo));
+    }
+
+    /**
+     * 删除楼层标签
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:floorLabel:remove")
+    @Log(title = "楼层标签", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(sysFloorLabelService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysFloorTitleController.java

@@ -0,0 +1,106 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SysFloorTitleVo;
+import org.dromara.system.domain.bo.SysFloorTitleBo;
+import org.dromara.system.service.ISysFloorTitleService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 楼层标题配置
+ * 前端访问路由地址为:/system/floorTitle
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/floorTitle")
+public class SysFloorTitleController extends BaseController {
+
+    private final ISysFloorTitleService sysFloorTitleService;
+
+    /**
+     * 查询楼层标题配置列表
+     */
+    @SaCheckPermission("system:floorTitle:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysFloorTitleVo> list(SysFloorTitleBo bo, PageQuery pageQuery) {
+        return sysFloorTitleService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出楼层标题配置列表
+     */
+    @SaCheckPermission("system:floorTitle:export")
+    @Log(title = "楼层标题配置", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysFloorTitleBo bo, HttpServletResponse response) {
+        List<SysFloorTitleVo> list = sysFloorTitleService.queryList(bo);
+        ExcelUtil.exportExcel(list, "楼层标题配置", SysFloorTitleVo.class, response);
+    }
+
+    /**
+     * 获取楼层标题配置详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:floorTitle:query")
+    @GetMapping("/{id}")
+    public R<SysFloorTitleVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(sysFloorTitleService.queryById(id));
+    }
+
+    /**
+     * 新增楼层标题配置
+     */
+    @SaCheckPermission("system:floorTitle:add")
+    @Log(title = "楼层标题配置", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SysFloorTitleBo bo) {
+        return toAjax(sysFloorTitleService.insertByBo(bo));
+    }
+
+    /**
+     * 修改楼层标题配置
+     */
+    @SaCheckPermission("system:floorTitle:edit")
+    @Log(title = "楼层标题配置", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysFloorTitleBo bo) {
+        return toAjax(sysFloorTitleService.updateByBo(bo));
+    }
+
+    /**
+     * 删除楼层标题配置
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:floorTitle:remove")
+    @Log(title = "楼层标题配置", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(sysFloorTitleService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysIndustrialHomeTitleController.java

@@ -0,0 +1,106 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SysIndustrialHomeTitleVo;
+import org.dromara.system.domain.bo.SysIndustrialHomeTitleBo;
+import org.dromara.system.service.ISysIndustrialHomeTitleService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 工业装修导航管理
+ * 前端访问路由地址为:/system/industrialHomeTitle
+ *
+ * @author LionLi
+ * @date 2025-12-25
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/industrialHomeTitle")
+public class SysIndustrialHomeTitleController extends BaseController {
+
+    private final ISysIndustrialHomeTitleService sysIndustrialHomeTitleService;
+
+    /**
+     * 查询工业装修导航管理列表
+     */
+    @SaCheckPermission("system:industrialHomeTitle:list")
+    @GetMapping("/list")
+    public TableDataInfo<SysIndustrialHomeTitleVo> list(SysIndustrialHomeTitleBo bo, PageQuery pageQuery) {
+        return sysIndustrialHomeTitleService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出工业装修导航管理列表
+     */
+    @SaCheckPermission("system:industrialHomeTitle:export")
+    @Log(title = "工业装修导航管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysIndustrialHomeTitleBo bo, HttpServletResponse response) {
+        List<SysIndustrialHomeTitleVo> list = sysIndustrialHomeTitleService.queryList(bo);
+        ExcelUtil.exportExcel(list, "工业装修导航管理", SysIndustrialHomeTitleVo.class, response);
+    }
+
+    /**
+     * 获取工业装修导航管理详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:industrialHomeTitle:query")
+    @GetMapping("/{id}")
+    public R<SysIndustrialHomeTitleVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable("id") Long id) {
+        return R.ok(sysIndustrialHomeTitleService.queryById(id));
+    }
+
+    /**
+     * 新增工业装修导航管理
+     */
+    @SaCheckPermission("system:industrialHomeTitle:add")
+    @Log(title = "工业装修导航管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SysIndustrialHomeTitleBo bo) {
+        return toAjax(sysIndustrialHomeTitleService.insertByBo(bo));
+    }
+
+    /**
+     * 修改工业装修导航管理
+     */
+    @SaCheckPermission("system:industrialHomeTitle:edit")
+    @Log(title = "工业装修导航管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysIndustrialHomeTitleBo bo) {
+        return toAjax(sysIndustrialHomeTitleService.updateByBo(bo));
+    }
+
+    /**
+     * 删除工业装修导航管理
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:industrialHomeTitle:remove")
+    @Log(title = "工业装修导航管理", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable("ids") Long[] ids) {
+        return toAjax(sysIndustrialHomeTitleService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 82 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloor.java

@@ -0,0 +1,82 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 分类楼层主对象 sys_floor
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_floor")
+public class SysFloor extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层编号
+     */
+    private Long floorNo;
+
+    /**
+     * 楼层名称
+     */
+    private String floorName;
+
+    /**
+     * 楼层描述
+     */
+    private String floorDescribe;
+
+    /**
+     * 楼层标签(顶部导航标签,逗号分隔)
+     */
+    private String floorLabel;
+
+    /**
+     * 标签颜色
+     */
+    private String labelColor;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 89 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorAdvertManage.java

@@ -0,0 +1,89 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+
+/**
+ * 楼层广告管理对象 sys_floor_advert_manage
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_floor_advert_manage")
+public class SysFloorAdvertManage extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 管理编号(关联楼层)
+     */
+    private String manageNo;
+
+    /**
+     * 封面图片
+     */
+    private String coverImage;
+
+    /**
+     * 广告标题
+     */
+    private String advertTitle;
+
+    /**
+     * 广告简介
+     */
+    private String advertBrief;
+
+    /**
+     * 广告链接
+     */
+    private String advertUrl;
+
+    /**
+     * 广告位置(1采购问推荐 2发现-卡片 3发现-商品 4商品轮播)
+     */
+    private Long advertPosition;
+
+    /**
+     * 序号
+     */
+    private Long manageSerial;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 89 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorAdvertise.java

@@ -0,0 +1,89 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
+
+import java.io.Serial;
+
+/**
+ * 楼层广告对象 sys_floor_advertise
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_floor_advertise")
+public class SysFloorAdvertise extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层编号
+     */
+    private Long floorNo;
+
+    /**
+     * 广告名称
+     */
+    private String advertiseName;
+
+    /**
+     * 广告链接
+     */
+    private String advertiseLink;
+
+    /**
+     * 广告描述
+     */
+    private String advertiseDescribe;
+
+    /**
+     * 广告图片
+     */
+    private String advertiseImage;
+
+    /**
+     * 最低价格
+     */
+    private String minPrice;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 87 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorLabel.java

@@ -0,0 +1,87 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 楼层标签对象 sys_floor_label
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_floor_label")
+public class SysFloorLabel extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 楼层编号
+     */
+    private Long floorNo;
+
+    /**
+     * 标签编号
+     */
+    private String labelNo;
+
+    /**
+     * 标签名称
+     */
+    private String labelName;
+
+    /**
+     * 标签链接
+     */
+    private String labelLink;
+
+    /**
+     * 标签描述
+     */
+    private String labelDescribe;
+
+    /**
+     * 位置(0热门标签 1其他)
+     */
+    private Long position;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 87 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysFloorTitle.java

@@ -0,0 +1,87 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 楼层标题配置对象 sys_floor_title
+ *
+ * @author LionLi
+ * @date 2025-12-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("sys_floor_title")
+public class SysFloorTitle extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 副标题
+     */
+    private String subtitle;
+
+    /**
+     * 链接文字
+     */
+    private String linkWord;
+
+    /**
+     * 链接地址
+     */
+    private String linkUrl;
+
+    /**
+     * 背景颜色
+     */
+    private String bgColor;
+
+    /**
+     * 标签颜色
+     */
+    private String labelColor;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    /**
+     * 是否显示(0否 1是)
+     */
+    private String isShow;
+
+    /**
+     * 状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.